Cod sursa(job #1589517)

Utilizator t_@lexAlexandru Toma t_@lex Data 4 februarie 2016 09:02:01
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
# include <fstream>
# include <vector>
# include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector <pair<int,int> > v[30001];
queue <int> q;
int n,m,x,y,d[30001];
bool p[30001];
void read()
{
    int i,a,b,d;
    f>>n>>m>>x>>y;
    for(i=1;i<=m;i++)
        {
         f>>a>>b>>d;
         v[a].push_back(make_pair(b,d));
         v[b].push_back(make_pair(a,-d));
        }
}
void BFS(int x)
{
    int i,n;
    bool ok=0;
    p[x]=1;
    q.push(x);
    while(!q.empty()&&!ok)
            {
             x=q.front();
             q.pop();
             n=v[x].size();
             for(i=0;i<n&&!ok;i++)
                  if(!p[v[x][i].first])
                        {
                         p[v[x][i].first]=1;
                         q.push(v[x][i].first);
                         d[v[x][i].first]=d[x]+v[x][i].second;
                         if(v[x][i].first==y)
                              ok=1;
                        }
            }
}
int main()
{
    read();
    BFS(x);
    g<<d[y];
    f.close();
    g.close();
    return 0;
}