版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwwlps/article/details/84492305
https://ac.nowcoder.com/acm/contest/221/K
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int mod=1e9+7;
const int maxn=1e5+5;
struct Edge
{
int next;
int to;
int w;
}edge[maxn];
struct node
{
int num;
int dist;
node(int x,int y)
{
num=x;
dist=y;
}
friend bool operator<(node a,node b)
{
return a.dist>b.dist;
}
};
int head[maxn];
int n,m,cnt;
int dis[maxn];
bool vis[maxn];
void add(int u,int v,int w)
{
edge[cnt].next=head[u];
edge[cnt].to=v;
edge[cnt].w=w;
head[u]=cnt++;
}
void dij(int x)
{
priority_queue<node>que;
memset(dis,0x3f,sizeof(dis));
dis[x]=0;
que.push(node(x,0));
while(!que.empty())
{
node p=que.top();
que.pop();
int now=p.num;
int Max;
for(int i=head[now];i!=-1;i=edge[i].next)
{
Edge e=edge[i];
Max=max(dis[now],e.w);
if(dis[e.to]>Max)
{
dis[e.to]=Max;
que.push(node(e.to,dis[e.to]));
}
}
}
}
int main()
{
int x,y,w;
while(cin>>n>>m)
{
memset(head,-1,sizeof(head));
for(int i=1;i<=m;i++)
{
cin>>x>>y>>w;
add(x,y,w);
}
dij(1);
cout << dis[n] << endl;
}
return 0;
}
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <set>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
const int mod=1e9+7;
const int maxn=205;
int n,m,ans;
bool book[maxn];
struct node
{
int to,w;
};
vector<node>v[maxn];
void dfs(int e,int temp_Max)
{
if(e==n)
{
ans=min(ans,temp_Max);
return ;
}
if(temp_Max>=ans)
return ;
for(int i=0;i<v[e].size();i++)
{
int u=v[e][i].to;
int w=v[e][i].w;
if(book[u]==true)
continue;
book[u]=true;
dfs(u,max(temp_Max,w));
book[u]=false;
}
}
int main()
{
while(cin>>n>>m)
{
for(int i=0;i<maxn;i++)
v[i].clear();
for(int i=0;i<m;i++)
{
int a,b,c;
cin>>a>>b>>c;
node t;
t.to=b;
t.w=c;
v[a].push_back(t);
}
ans=INF;
memset(book,false,sizeof(book));
dfs(1,0);
cout << ans <<endl;
}
}