Pagini recente » Borderou de evaluare (job #2857139) | Cod sursa (job #2480700) | Borderou de evaluare (job #957849) | Borderou de evaluare (job #1183862) | Cod sursa (job #782270)
Cod sursa(job #782270)
#include<iostream>
#include<fstream>
#include<vector>
const int maxx=30002;
using namespace std;
int n,m,start,finish,i,a,b,c,inc,sf,coada[maxx][2];
bool viz[maxx];
vector <pair<int,int> > x[maxx];
void bfs()
{
inc=sf=1;
coada[inc][0]=start;
while(inc<=sf)
{
viz[coada[inc][0]]=true;
for(i=0;i<x[coada[inc][0]].size();i++)
if(viz[x[coada[inc][0]][i].first]==false)
{
sf++;
coada[sf][0]=x[coada[inc][0]][i].first;
if(coada[inc][0]<x[coada[inc][0]][i].first)
coada[sf][1]=coada[inc][1]+x[coada[inc][0]][i].second;
else
coada[sf][1]=coada[inc][1]-x[coada[inc][0]][i].second;
if(finish==x[coada[inc][0]][i].first)
{
printf("%d\n",coada[sf][1]);
i=x[coada[inc][0]].size()+5;
inc=sf+5;
}
}
inc++;
}
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d %d %d %d\n",&n,&m,&start,&finish);
for(i=1;i<=m;i++)
{
scanf("%d %d %d\n",&a,&b,&c);
x[a].push_back(make_pair(b,c));
x[b].push_back(make_pair(a,c));
}
bfs();
return 0;
}