Pagini recente » Diferente pentru probleme-de-taietura intre reviziile 93 si 92 | Monitorul de evaluare | Diferente pentru preoni-2006/runda-4/solutii intre reviziile 6 si 5 | Istoria paginii utilizator/adiii_santa | Cod sursa (job #426714)
Cod sursa(job #426714)
#include<iostream>
#include<list>
#include<vector>
#include<queue>
#define min(a,b) ((a>b)?(b):(a))
#define INF 20000
#define NMAX 100001
using namespace std;
struct nod{int x,c;};
list<nod> G[NMAX];
int n,m;
int maxv;
void citire()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
nod l; l.x=y; l.c=w;
G[x].push_back(l);
l.x=x, G[y].push_back(l);
}
}
int bf()
{
vector<int> viz(n+1,0);
queue<int> Q;
Q.push(1);
viz[1]=1;
list<nod>::iterator it;
int minv=INF;
while(!Q.empty())
{
int x=Q.front();
Q.pop();
for(it=G[x].begin();it!=G[x].end();it++)
{
nod l=(*it);
if(!viz[l.x] && l.c>maxv)
{
minv=min(minv,l.c);
viz[l.x]=1;
Q.push(l.x);
}
}
}
if(viz[n]) maxv=minv;
return viz[n];
}
void rezolvare()
{
maxv=0;
while(bf());
}
void afisare()
{
printf("%d",maxv);
}
int main()
{
freopen("transport2.in","r",stdin);
freopen("transport2.out","w",stdout);
citire();
rezolvare();
afisare();
return 0;
}