Cod sursa(job #1354203)

Utilizator StefanMudragMudrag Stefan StefanMudrag Data 21 februarie 2015 18:05:44
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<iostream>
#include<fstream>
#include<vector>
#define NMAX 30001
#include<utility>
#include<algorithm>
#include<queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
vector<pair<int,int> >g[NMAX];
vector<bool>viz(NMAX,false);
int n,m,X,Y;
queue<int>Q;
void read()
{
    fin>>n>>m>>X>>Y;
    int x,y,c;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>c;
        g[x].push_back(make_pair(y,c));
        g[y].push_back(make_pair(x,-c));
    }
    fin.close();
}
void bfs(int x)
{
    viz[x]=true;
    Q.push(x);
    int ok=1,d=0;
    while(!Q.empty()&&ok)
    {
        x=Q.front();Q.pop();

        for(int i=0;i<g[x].size()&&ok;i++)
        {
              if(!viz[g[x][i].first])
              {
                  if(g[x][i].first==Y)ok=0;
                  viz[g[x][i].first]=true;
                  Q.push(g[x][i].first);
                  d+=g[x][i].second;
              }
        }

    }
    fout<<abs(d);
}
int main()
{
    read();
    bfs(X);
    fout.close();
    return 0;

}