Cod sursa(job #373918)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 15 decembrie 2009 14:40:10
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> v[30001];
vector<int> di[30001];
int n,m,x,y,p[30001],viz[30001],in,sf,nrr,d[30001];
int main ()
{
    int i,a,b,c;
    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,&c);
        v[a].push_back(b);
        v[b].push_back(a);
        di[a].push_back(c);
        di[b].push_back(-c);
    }
    p[1]=x;
    in=1;sf=1;
    viz[x]=1;
    while(sf>=in)
    {
        nrr=v[p[in]].size();
        for(i=0;i<nrr;i++)
        {
            c=v[p[in]][i];
            if(viz[c]==0)
            {
                p[++sf]=c;
                viz[p[sf]]=1;
                d[p[sf]]=d[p[in]]+di[p[in]][i];
                if(p[sf]==y)
                {
                    printf("%d\n",d[y]);
                    return 0;
                }  //if p
            }   //if viz
        }//for
        in++;
    }   //while
    printf("%d\n",d[y]);
    return 0;
}