Cod sursa(job #1228894)

Utilizator george_stelianChichirim George george_stelian Data 15 septembrie 2014 19:09:18
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <vector>

using namespace std;

struct graf
{
    int x,c;
}aux;
vector<graf>v[30010];
vector<graf>::iterator it;
int sol[30010],coada[30010],n,m,a,b,x,y,c,i,nod,nr;
char vaz[30010];

int main()
{
    freopen("sate.in", "r", stdin);
    freopen("sate.out", "w", stdout);
    scanf("%d%d%d%d",&n,&m,&a,&b);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d%d",&x,&y,&c);
        aux.x=y;
        aux.c=c;
        v[x].push_back(aux);
        aux.x=x;
        aux.c=-c;
        v[y].push_back(aux);
    }
    coada[++nr]=a;
    vaz[a]=1;
    for(i=1;i<=nr;i++)
    {
        nod=coada[i];
        if(nod==b)
        {
            printf("%d",sol[b]);
            break;
        }
        for(it=v[nod].begin();it!=v[nod].end();it++)
        {
            aux=*it;
            if(!vaz[aux.x])
            {
                vaz[aux.x]=1;
                sol[aux.x]=sol[nod]+aux.c;
                coada[++nr]=aux.x;
            }
        }
    }
    return 0;
}