Cod sursa(job #368236)

Utilizator loginLogin Iustin Anca login Data 24 noiembrie 2009 11:19:10
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
# 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;
}