Cod sursa(job #22298)

Utilizator Anarchy99Vlad Manolache Anarchy99 Data 26 februarie 2007 00:57:13
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream.h>
ifstream f("distante.in");
ofstream g("distante.out");
int a[100000][1000000],d[1000000],viz[1000000],n,m,ok,dist;

void DF(int x)
{ int j,w=0;
  viz[x]=1;
  if(x==n) { if(dist!=d[x]) ok=0;
	     dist=0;
	   }
  for(j=1;j<=n;j++)
    if(a[x][j] && !viz[j]){ dist+=a[x][j]; DF(j); }
}
void distanta()
{ int x,y,c,i,t,q;
  f>>t;
  while(t)
  { ok=1;
    f>>n>>m>>q;
    for(i=1;i<=n;i++) f>>d[i];
    for(i=1;i<=m;i++)
    { f>>x>>y>>c;
      a[x][y]=c;
      a[y][x]=c;
    }
    DF(q);
    if(ok) g<<"DA"; else g<<"NU";
    t--;
    for(i=1;i<=n;i++) d[i]=viz[i]=0;
    }}
void main()
{ distanta();
  cout<<'\n';
}