Pagini recente » Cod sursa (job #173507) | Cod sursa (job #21664) | Cod sursa (job #1432382) | Cod sursa (job #2593555) | Cod sursa (job #403838)
Cod sursa(job #403838)
#include<fstream>
#include<iostream>
#include<vector>
#include<stdio.h>
#define Nmax 30001
using namespace std;
vector<int> G[Nmax],D[Nmax];
int n,m, a, b;
int cost[Nmax],vizitat[Nmax],c[Nmax];
void citire()
{
int i, km, x, y;
freopen("sate.in","r",stdin);
scanf("%d%d%d%d",&n,&m,&a,&b);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&km);
G[x].push_back(y);
G[y].push_back(x);
D[x].push_back(km);
D[y].push_back(-km);
}
}
void bfs(int nod)
{
int li,ls,i,vecini,sat,cli;
li=1;ls=1;
c[li]=nod;
cost[nod]=1;
while(c[li]!=b)
{
vecini=G[c[li]].size();
cli=c[li];
for(i=0;i<vecini;i++)
{
sat=G[c[li]][i];
if(cost[sat]==0)
{
ls++;
c[ls]=sat;
cost[sat]=cost[cli]+D[cli][i];
}
}
li++;
}
}
int main()
{
citire();
bfs(a);
freopen("sate.out","w",stdout);
printf("%d",cost[b]-1);
return 0;
}