Pagini recente » Cod sursa (job #1879592) | Cod sursa (job #1725434) | Cod sursa (job #3225185) | Cod sursa (job #321693) | Cod sursa (job #1396525)
#include <queue>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
long c[31000];
int y;
vector <pair<int,int> >graf[31000];
void bfs(int nod,int m,long o[])
{
queue <int> que;
que.push(nod);
queue < int>::size_type s;
char vis[31000]={};
o[nod]=0;
s=que.size();
while(s)
{
int nd=que.front();
for(int i=0;i<graf[nd].size();i++)
{
if(vis[graf[nd][i].second]==0){
que.push(graf[nd][i].second);
o[graf[nd][i].second]=o[nd]+graf[nd][i].first;
}
vis[graf[nd][i].second]=1;
}
que.pop();
s=que.size();
}
}
int main()
{
int n,m,x;
f>>n>>m>>x>>y;
for(int i=1;i<=m;i++)
{
int m1,m2,c;
f>>m1>>m2>>c;
graf[m1].push_back(make_pair(c, m2));
graf[m2].push_back(make_pair(-c, m1));
}
for(int i=1;i<=n;i++){
c[i]=1<<28;
}
bfs(x,n,c);
g<<c[y]<<" ";
return 0;
}