Pagini recente » Rating Bogdan Pocol (bilbor987) | Rating Bossu Vostru (LeeT) | Cod sursa (job #117926) | preONI 2008 - Runda 4, Clasele 11-12 | Cod sursa (job #820331)
Cod sursa(job #820331)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
struct segment{
int fin,dist;
};
int X,Y,n,m,rez,sate[30001];
vector <segment> v[30001];
queue <int> q;
segment makestruct(int x,int y)
{
segment a;
a.fin=x;a.dist=y;
return a;
}
void bfs()
{
int x,y,nou;
while(!q.empty())
{
int curent=q.front();
q.pop();
for(int i=0;i<v[curent].size();i++)
{
x=curent;
y=v[curent][i].fin;
if(x<y)
nou=sate[curent]+v[curent][i].dist;
else
nou=sate[curent]-v[curent][i].dist;
if(sate[y]==-1||sate[y]<nou)
{
q.push(y);
sate[y]=nou;
}
}
}
}
int main()
{
int i,x,y,dist;
in>>n>>m>>X>>Y;
for(i=1;i<=m;i++)
{
in>>x>>y>>dist;
v[x].push_back(makestruct(y,dist));
v[y].push_back(makestruct(x,dist));
}
for(i=1;i<=n;i++)
sate[y]=-1;
q.push(X);
bfs();
out<<sate[Y];
}