Cod sursa(job #999535)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 20 septembrie 2013 17:37:14
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
 
queue <int> q;
vector <pair<int,int> > v[30002];
int c[30002],d[30002];
 
int main()
{
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    int n,m,i,s,f,x,y,aux,l;
    scanf("%d%d%d%d",&n,&m,&s,&f);
    if(s==f)
    {
        printf("0\n");
        return 0;
    }
    for(i=1;i<=m;++i)
    {
        scanf("%d%d%d",&x,&y,&l);
        v[x].push_back(make_pair(y,l));
        v[y].push_back(make_pair(x,-l));
    }
    ////////////////////////////
 
    q.push(s);
    c[s]=1;
    while(!q.empty())
    {
        aux=q.front();
        q.pop();
        for(i=0;i<v[aux].size();++i)
            if(!c[v[aux][i].first])
            {
                c[v[aux][i].first]=1;
                d[v[aux][i].first]=d[aux]+v[aux][i].second;
                q.push(v[aux][i].first);
            }
        if(c[f]==1)
            break;
    }
    printf("%d\n",d[f]);
    return 0;
}