Cod sursa(job #689919)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 24 februarie 2012 23:06:54
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
#define N 30001
bool c[N];
int i,n,m,x,y,j,p,u,k,s[N],e[N],*h[N],*z[N],v[N];
int main()
{FILE *f=fopen("sate.in","r"),*g=fopen("sate.out","w");
fscanf(f,"%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=n;i++)
      h[i]=new int[1],z[i]=new int[1],v[i]=0;
while(m--)
      fscanf(f,"%d%d%d",&i,&j,&k),v[i]++,v[j]++;
for(i=1;i<=n;i++)
      h[i]=new int[v[i]],z[i]=new int[v[i]],v[i]=0;
fseek(f,0,SEEK_SET);
fscanf(f,"%d%d%d%d",&n,&m,&x,&y);
while(m--)
      fscanf(f,"%d%d%d",&i,&j,&k),h[i][v[i]]=j,h[j][v[j]]=i,z[i][v[i]++]=k,z[j][v[j]++]=-k;      
for(i=0;i<v[x];i++)
      s[u++]=h[x][i],e[h[x][i]]=z[x][i];
for(c[x]=1;u&&!c[y];p++)
for(j=s[p],c[j]=1,i=0;i<v[j];i++)
if(!c[h[j][i]])       
      s[u++]=h[j][i],e[h[j][i]]=z[j][i]+e[j];
fprintf(g,"%d",e[y]);
return 0;}