Pagini recente » Istoria paginii runda/1234567/clasament | Cod sursa (job #452462) | Cod sursa (job #2297900) | Cod sursa (job #1193035) | Cod sursa (job #2374395)
#include <bits/stdc++.h>
using namespace std;
ifstream fi ("sate.in");
ofstream fo ("sate.out");
typedef struct nod {
int info;
int dist;
nod *next;
} *lista;
int n,m,X,Y,q[100025];
lista A[100025];
void add (lista &p, int k, int q)
{
lista r = new nod;
r->info = k;
r->dist = q;
r->next = p;
p=r;
}
int main () {
int i,j,x,y,d;
fi>>n>>m>>X>>Y ;
while (m--){
fi>>x>>y>>d;
add (A[x],y,d);
}
q[X]=1;
while(q[Y] == 0)
{
lista r= new nod;
for (i=1; i<=n; ++i)
{
r=A[i];
while (r)
{
if(q[i] && !q[r->info])
{
q[r->info]=q[i]+r->dist;
}
else
if(!q[i] && q[r->info])
{
q[i]=q[r->info]-r->dist;
}
r=r->next;
}
}
}
fo<<q[Y]-1;
return 0;
}