Cod sursa(job #252612)

Utilizator me_andyAvramescu Andrei me_andy Data 4 februarie 2009 17:45:04
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream.h>
#define max 100000
 ifstream f("sate.in");
 ofstream g("sate.out");
   long z,fin,ok,cont,p,val[max],xpr,uz[max],vec[max],n,m,s,i,x,y;

typedef struct nod
{
 int info,cost;
 nod *urm;
} *pNod;


pNod a[max];


void add(pNod &prim,int val,int c)
{
 pNod x;
 x=new nod;
 x->info=val;
 x->cost=c;
 x->urm=prim;
 prim=x;
}



int main()
{
  f>>n>>m>>s>>fin;
 for(i=1;i<=m;i++)
  f>>x>>y>>z,add(a[x],y,z),add(a[y],x,z);
 ok=1;

 vec[1]=s;
 p=1;
 uz[vec[1]]=1;
 val[vec[1]]=0;
 for(i=1;i<=p;i++)
 {
   pNod prim=a[vec[i]];
  while(prim)
  {
   if(uz[prim->info]==0)
   {
    vec[++p]=prim->info;
    if(vec[p]>vec[i])
    val[vec[p]]=val[vec[i]]+prim->cost;
    else
	val[vec[p]]=val[vec[i]]-prim->cost;
    uz[vec[p]]=1;
   }
   prim=prim->urm;
  }
 }
  g<<val[fin]<<" ";

  return 0;
}