Cod sursa(job #1040700)

Utilizator dragosaioaneiAioanei Dragos dragosaioanei Data 24 noiembrie 2013 20:19:34
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <vector>
using namespace std;
#define IN "sate.in"
#define OUT "sate.out"
#define NMAX 30005

FILE * fin=fopen(IN,"r");
FILE * fout=fopen(OUT,"w");

vector <pair <int,int> > graf[NMAX];
int coada[NMAX];
int distanta[NMAX];

int main ()
{
    int n,m,x,y,aux,i,a,b,c;
    fscanf(fin,"%d%d%d%d",&n,&m,&x,&y);
    if(x>y){ aux=x; x=y; y=aux; }

    for(i=1;i<=m;i++)
    {
        fscanf(fin,"%d%d%d",&a,&b,&c);
        graf[a].push_back(make_pair(b,c));
        graf[b].push_back(make_pair(a,-c));
    }


    coada[1]=x;
    int nr=1,ok=0,nod,j;
    for(i=1;i<=nr && ok==0;i++)
    {
        nod=coada[i];
        for(j=0;j<graf[nod].size();j++)
        {
            if(distanta[graf[nod][j].first]==0)
            {
                coada[++nr]=graf[nod][j].first;
                distanta[graf[nod][j].first]=distanta[nod]+graf[nod][j].second;
                if(graf[nod][j].first==y)
                    ok=1;
            }
        }
    }


    fprintf(fout,"%d\n",distanta[y]);
    fclose(fin);
    fclose(fout);
    return 0;
}