Cod sursa(job #426714)

Utilizator DranaXumAlexandru Dumitru Paunoiu DranaXum Data 27 martie 2010 12:00:44
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#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;
}