Pagini recente » Cod sursa (job #287599) | Cod sursa (job #2090872) | Cod sursa (job #3208107) | Cod sursa (job #1868800) | Cod sursa (job #1040700)
#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;
}