Cod sursa(job #1739899)

Utilizator Bodo171Bogdan Pop Bodo171 Data 10 august 2016 14:23:11
Problema PScNv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include<fstream>
#include<vector>
#include<bitset>
#include<string>
using namespace std;
const int nmax=250005;
vector<pair <int,int > > v[nmax],a[5005];
bitset<nmax> viz;
int n,m,x,y,node1,node2,k,mn,i,j,num,c;
string s;
int getnum()
{
    num=0;
    while(s[c]>='0'&&s[c]<='9')
        num=num*10+s[c]-'0',c++;
    c++;
    return num;
}
int main()
{
    ifstream f("pscnv.in");
    ofstream g("pscnv.out");
    f>>n>>m>>x>>y;f.get();
    for(i=1;i<=m;i++)
    {
        c=0;
        getline(f,s);
        node1=getnum();
        node2=getnum();
        k=getnum();
        v[node1].push_back(make_pair(node2,k));
        a[k].push_back(make_pair(node1,node2));
    }
    viz[x]=1;
    for(i=1;i<=5000&&viz[y]==0;i++)
        for(j=0;j<a[i].size()&&viz[y]==0;j++)
    {
        node1=a[i][j].first;
        node2=a[i][j].second;
        if(viz[node1]&&viz[node2]==0)
        {
            viz[node2]=1;
            for(k=0;k<v[node2].size();k++)
            {
                if(v[node2][k].second<=i)
                    a[i].push_back(make_pair(node2,v[node2][k].first));
            }

        }
        if(viz[y]) mn=i;
    }
    g<<mn;
    return 0;
}