Pagini recente » Cod sursa (job #2654526) | Istoria paginii runda/cartof125/clasament | Cod sursa (job #798443) | Cod sursa (job #1989885) | Cod sursa (job #795962)
Cod sursa(job #795962)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <cstring>
#define mp make_pair
using namespace std;
int drum[30005],y;
vector<pair<int,int> > list[30005];
queue<int> q;
void bfs()
{
while(!q.empty())
{
int nod=q.front();
q.pop();
if(nod==y)
return;
for(unsigned int i=0;i<list[nod].size();i++)
{
int next_nod=list[nod][i].first;
int cost=list[nod][i].second;
if(drum[next_nod]>drum[nod]+cost)
{
drum[next_nod]=drum[nod]+cost;
q.push(next_nod);
}
}
}
return;
}
int main()
{
int n,m,x;
ifstream f("sate.in");
ofstream g("sate.out");
f>>n>>m>>x>>y;
memset(drum,127,sizeof(drum));
for(int i=1;i<=n;i++)
{
int a,b,c;
f>>a>>b>>c;
if(a<b)
{
list[a].push_back(mp(b,c));
list[b].push_back(mp(a,-c));
}
else
{
list[a].push_back(mp(b,-c));
list[b].push_back(mp(a,c));
}
}
drum[x]=0;
q.push(x);
bfs();
g<<drum[y];
return 0;
}