Pagini recente » Cod sursa (job #613585) | Cod sursa (job #1372762) | Cod sursa (job #1188722) | Cod sursa (job #1783112) | Cod sursa (job #1322186)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
const int NMAX = 30001;
int n,m,x,y;
struct elem
{
int x,d;
};
vector <elem> v[NMAX];
queue <int> q;
int d[NMAX];
void citire()
{
f>>n>>m>>x>>y;
elem aux; int j; int k;
for(int i=1; i<=m; i++)
{
f>>j>>aux.x>>aux.d;
v[j].push_back(aux);
k = aux.x;
aux.x = j;
j = k;
aux.d = -aux.d;
v[j].push_back(aux);
}
}
int main()
{
int aux, i;
elem s;
citire();
q.push(x);
d[x] = 1;
while(!q.empty())
{
aux = q.front();
q.pop();
for(i=0; i<v[aux].size(); i++)
{
s = v[aux][i];
if(d[s.x] == 0)
{
d[s.x] = d[aux] + s.d;
q.push(s.x);
}
if(s.x == y)
{
while(!q.empty())
q.pop();
}
}
}
g<<d[y] - 1;
return 0;
}