Cod sursa(job #70063)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 4 iulie 2007 18:40:16
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
int n,x,y,p[100024],q[100024],mark[30001],aa,bb,cc;
long int m,i,d[100024],a[30001],poz,sol;
int main()
{
	FILE *f,*g;
	f=fopen("sate.in","r");
	g=fopen("sate.out","w");
	fscanf(f,"%d%ld%d%d",&n,&m,&x,&y);
	for(i=1;i<=m;i++)
	{ fscanf(f,"%d%d",&p[i],&q[i]);
	  fscanf(f,"%ld",&d[i]);
	}
	mark[x]=1;
	a[x]=0;
	while(!mark[y])
	{
	   poz=1;
	   while(poz<=m)
	   { aa=mark[p[poz]];
	     bb=mark[q[poz]];
	     cc=aa+bb;
	     if(cc%2)
	      { if(aa)
		 { a[q[poz]]=a[p[poz]]+d[poz];
		   mark[q[poz]]=1;
		 }
		else
		 { a[p[poz]]=a[q[poz]]-d[poz];
		   mark[p[poz]]=1;
		 }
		 p[poz]=p[m];
		 q[poz]=q[m];
		 d[poz]=d[m];
		 m--;
	      }
	      else poz++;
	     }
	   }
	   sol=a[y];
	   if(sol<0)sol=-sol;
	   fprintf(g,"%ld\n",sol);
	   fcloseall();
	   return 0;
}