Pagini recente » Cod sursa (job #2694844) | Cod sursa (job #2175909) | Cod sursa (job #2893816) | Cod sursa (job #935896) | Cod sursa (job #182785)
Cod sursa(job #182785)
# include <stdio.h>
# include <vector>
using namespace std;
# define input "sate.in"
# define output "sate.out"
# define max 30001
int coada[max],u[max];
int start, finish;
int i,j,n,m,x,y,d;
int res;
int dist[max];
struct eee
{
int y,d,s;
};
vector <eee> v[max];//,dis[max],semn[max];
int main()
{
freopen(input,"r", stdin);
freopen(output,"w", stdout);
scanf("%d%d%d%d",&n,&m,&start,&finish);
for(i = 0 ; i < m; i++)
{
scanf("%d%d%d",&x,&y,&d);
v[x].push_back((eee){y,d,1});
v[y].push_back((eee){x,d,-1});
}
coada[0] = start;
dist[0] = 0;
res = -1;
u[start] = 1;
int st,dr;
for(st = dr = 0; st <= dr; st++)
{
i = coada[st];
d = dist[st];
for(j = 0; j < v[i].size(); j++)
{
if(!u[v[i][j].y])
{
u[v[i][j].y] = 1;
coada[++dr] = v[i][j].y;
dist[dr] = d+v[i][j].d * v[i][j].s;
if(coada[dr] == finish)
{
printf("%d ",dist[dr]);
return 0;
}
}
}
}
printf("%d ",res);
return 0;
}