Pagini recente » Cod sursa (job #2507161) | Cod sursa (job #2277760) | Cod sursa (job #3198975) | Cod sursa (job #3197926) | Cod sursa (job #867662)
Cod sursa(job #867662)
#include <fstream>
#include <vector>
#include <list>
#include <math.h>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector < pair< int, int> >vec[30001];
list <int> coada;
int n,m,a,b,viz[30001],d[30001];
int main()
{
int x,y,i,j,c,sgn;
f>>n>>m>>a>>b;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
vec[x].push_back(make_pair(y,c));
vec[y].push_back(make_pair(x,c));
}
coada.push_back(a); viz[a]=1;
while(!coada.empty())
{
x=*coada.begin();
if(x==b) { if(d[b]<0) d[b]=-1*d[b]; g<<d[b]; break;}
for(i=0;i<vec[x].size();i++)
{
if(!viz[vec[x][i].first])
{
coada.push_back(vec[x][i].first);
viz[vec[x][i].first]=1;
sgn=1; if(vec[x][i].first>x) sgn=-1;
d[vec[x][i].first]=d[x]+sgn*vec[x][i].second;
}
}
coada.pop_front();
}
return 0;
}