Pagini recente » Cod sursa (job #2171358) | Cod sursa (job #189788) | Cod sursa (job #922988) | Cod sursa (job #1803626) | Cod sursa (job #368236)
Cod sursa(job #368236)
# include <fstream>
using namespace std;
ofstream fout("sate.out");
struct nod {
int info, d;
nod *next;};
nod *a[30003];
int *d, n, m, x, y;
void citire (){
ifstream fin ("sate.in");
fin>>n>>m>>x>>y;
d=new int [n+1];
for (int i=1;i<=n;i++)
a[i]=NULL, d[i]=-1;
nod *t;
for (;m;--m){
int i, j, d;
fin>>i>>j>>d;
t=new nod;
t->info=j;
t->d=d;
t->next=a[i];
a[i]=t;
t=new nod;
t->info=i;
t->d=d;
t->next=a[j];
a[j]=t;
}
}
void drum ()
{
nod *st, *dr;
int k;
st=dr=new nod;
st->info=x;
st->next=NULL;
d[st->info]=0;
while (st)
{
k=st->info;
nod *p;
p=a[k];
for (p=a[k];p;p=p->next)
if (d[p->info]==-1)
{
if (p->info>k)
d[p->info]=d[k]+p->d;
else
d[p->info]=d[k]-p->d;
nod *t=new nod;
t->info=p->info;
t->next=NULL;
dr->next=t;
dr=t;
}
p=st;
st=st->next;
delete p;
}
}
int main ()
{
citire ();
drum ();
fout<<d[y];
return 0;
}