Pagini recente » Cod sursa (job #612752) | Cod sursa (job #1303235) | Cod sursa (job #536820) | Cod sursa (job #501784) | Cod sursa (job #2858182)
#include <iostream>
#include <vector>
#define NMAX 30000
#define MMAX 100024
using namespace std;
vector<int> graph[NMAX], cost[NMAX];
int c[MMAX],d[NMAX];
int main(){
int n,m,x,y,a,b,i,st,dr,cs;
FILE *fin, *fout;
fin = fopen("sate.in","r");
fscanf(fin, "%d%d%d%d",&n,&m,&x,&y);
x--;
y--;
for(i = 0; i < n; i ++){
fscanf(fin, "%d%d%d",&a,&b,&cs);
graph[a-1].push_back(b-1);
cost[a-1].push_back(cs);
graph[b-1].push_back(a-1);
cost[b-1].push_back(-cs);
}
fclose(fin);
st = 0;
dr = 1;
c[0] = x;
d[0] = 1;
while(st < dr && d[y] == 0){
for(i = 0; i < (int)graph[c[st]].size(); i ++){
if(d[ graph[c[st]][i] ] == 0){
d[ graph[c[st]][i] ] = d[c[st]] + cost[c[st]][i];
c[dr] = graph[c[st]][i];
dr ++;
}
}
st++;
}
fout = fopen("sate.out","w");
fprintf(fout, "%d\n",d[y] -1);
fclose(fout);
return 0;
}