Pagini recente » Cod sursa (job #2541387) | Cod sursa (job #2113406) | Cod sursa (job #1244016) | Cod sursa (job #544) | Cod sursa (job #1438430)
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 30001
using namespace std;
int n,m,x,y;
int cost[NMAX];
queue<int> Q;
vector<pair<int,int> > G[NMAX];
ifstream f("sate.in");
ofstream g("sate.out");
void citire()
{
int a=0,b=0,d=0; //d =dist intre a si b
f>>n>>m>>x>>y;
for(int i=1; i<=m; i++)
{
f>>a>>b>>d;
G[a].push_back(make_pair(b,d));
G[b].push_back(make_pair(a,-d));
}
}
void bfs()
{
int a=0,nod=0,c=0;
Q.push(x);
cost[x]=1;
if(x==y) return;
while(!Q.empty())
{
a=Q.front();
for(vector<pair<int,int> >::iterator it=G[a].begin(); it!=G[a].end(); it++)
{
nod=it->first;
c=it->second;
if(cost[nod]==0)
{
cost[nod]=cost[a]+c;
if(nod==y)
return;
Q.push(nod);
}
}
Q.pop();
}
}
int main()
{
citire();
bfs();
g<<cost[y]-1<<" ";
return 0;
}