Pagini recente » Cod sursa (job #1648985) | Cod sursa (job #1797838) | Cod sursa (job #253087) | Cod sursa (job #1360745) | Cod sursa (job #396580)
Cod sursa(job #396580)
#include <stdio.h>
#include <vector>
#include <deque>
#define N 30001
struct nod
{int x,cost;
nod(int a,int b)
{x=a;
cost=b;
}
nod()
{}
};
using namespace std;
vector<nod> p[N];
bool viz[N];
int dist[N];
int main ()
{freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
int n,m,x,y,i,a,b,c,flag;
deque<int> q;
vector<nod>::iterator it,end;
scanf("%d %d %d %d",&n,&m,&x,&y);
for (i=1;i<=m;i++)
{scanf("%d %d %d",&a,&b,&c);
p[a].push_back(nod(b,c));
p[b].push_back(nod(a,c));
}
q.push_back(x);
viz[x]=1;
flag=0;
while(!q.empty()&&!flag)
{end=p[q.front()].end();
for (it=p[q.front()].begin();it!=end;it++)
{if(viz[(*it).x]==0)
{viz[(*it).x]=1;
if((*it).x>q.front())
{dist[(*it).x]=dist[q.front()]+(*it).cost;
}
else
{dist[(*it).x]=dist[q.front()]-(*it).cost;
}
q.push_back((*it).x);
}
if((*it).x==y)
{flag=1;
break;
}
}
q.pop_front();
}
printf("%d",dist[y]);
return 0;
}