Cod sursa(job #1067912)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 27 decembrie 2013 17:39:26
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
//horatiu11
# include <cstdio>
# include <vector>
# include <queue>
# define nmax 30001
using namespace std;
int n,m,x,y,a,b,d,viz[nmax];
vector < pair<int,int> >G[nmax];
queue <int>q;
inline void BFS(int x)
{
    int i;
    q.push(x);viz[x]=1;
    while(!q.empty())
    {
        x=q.front();q.pop();
        for(i=0;i<G[x].size();++i)
            if(!viz[G[x][i].first] )//|| viz[G[x][i].first]>viz[x]+G[x][i].second)
            {
                q.push(G[x][i].first);
                if(x>G[x][i].first)viz[G[x][i].first]=viz[x]-G[x][i].second;
                else viz[G[x][i].first]=viz[x]+G[x][i].second;
            }
    }
}
int main()
{
    int i;
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&x,&y);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d%d",&a,&b,&d);
        G[a].push_back(make_pair(b,d));
        G[b].push_back(make_pair(a,d));
    }
    BFS(x);
    printf("%d\n",viz[y]-viz[x]);
    return 0;
}