Pagini recente » Cod sursa (job #462421) | Cod sursa (job #1071018) | Cod sursa (job #2510947) | Cod sursa (job #1200048) | Cod sursa (job #1504952)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
int m,n,x,y;
struct edge
{
int dest;
int cost;
};
vector<edge> adj[30005];
int dist[30005];
queue<int> q;
int main()
{
int a,b,cost,front,i,d;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&x,&y);
for(i=0; i<m; i++)
{
a,b,cost;
scanf("%d %d %d",&a,&b,&cost);
edge ab,ba;
ab.dest=b;
ab.cost=cost;
ba.dest=a;
ba.cost=-cost;
adj[a].push_back(ab);
adj[b].push_back(ba);
}
q.push(x);
while(!q.empty())
{
front=q.front();
q.pop();
for(i=0; i<adj[front].size(); ++i)
{
int d=adj[front][i].dest;
if(dist[d]==0)
{
q.push(d);
dist[d]=dist[front]+adj[front][i].cost;
if(d==y)
{
printf("%d",dist[y]);
return 0;
}
}
}
}
}