Pagini recente » Cod sursa (job #2956480) | Cod sursa (job #1976777) | Cod sursa (job #1854888) | Cod sursa (job #1770350) | Cod sursa (job #767020)
Cod sursa(job #767020)
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
struct s{int v,c;};
vector <s> a[75001];
int n,m,X,Y,x,y,dist[75001];
void alg( int nod)
{
int i, cost, nodc;
queue <int >q;
q.push(nod);
while (!q.empty())
{
nod=q.front();
q.pop();
for (i=0;i<a[nod].size();i++)
{
nodc=a[nod][i].v;
cost=a[nod][i].c;
if (nodc<nod)
cost=cost-2*cost;
if (dist[nodc]==0 || dist[nodc]>dist[nod]+cost)
{
dist[nodc]=dist[nod]+cost;
q.push(nodc);
}
}
}
}
int main(void)
{
fstream f,g;
f.open("sate.in",ios::in);
g.open("sate.out",ios::out);
f>>n>>m>>X>>Y;
int i;
s z,l;
for (i=1;i<=m;i++)
{
f>>x>>z.v>>z.c;
l.v=x;
l.c=z.c;
a[x].push_back(z);
a[z.v].push_back(l);
}
alg(X);
g<<dist[Y];
}