Pagini recente » Cod sursa (job #38049) | Cod sursa (job #2862175) | Cod sursa (job #1781756) | Cod sursa (job #1230843) | Cod sursa (job #1737839)
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n,m,x,y;
vector<vector<pair<int,int> > > g;
vector<bool> visited;
vector<int> d;
queue<int> q;
ifstream fin("sate.in");
ofstream fout ("sate.out");
void bfs()
{
q.push(x);
visited[x] = true;
while (!q.empty())
{
int node = q.front();
q.pop();
for (int i = 0; i < g[node].size();i++)
{
if (!visited[g[node][i].first])
{
if (g[node][i].first == y)
{
d[y] = d[node] + g[node][i].second;
return;
}
visited[g[node][i].first] = true;
q.push(g[node][i].first);
d[g[node][i].first] = d[node] + g[node][i].second;
//cout<<d[g[node][i].first]<<" "<<g[node][i].first<<"\n";
}
}
}
}
int main()
{
fin>>n>>m>>x>>y;
g.resize(n+1);
d.resize(n+1, 0);
visited.resize(n+1,false);
for (int k = 1; k <= m; k++)
{
int i,j,d;
fin>>i>>j>>d;
g[i].push_back(make_pair(j,d));
g[j].push_back(make_pair(i,-d));
}
bfs();
fout<<d[y]<<"\n";
return 0;
}