Cod sursa(job #1006155)

Utilizator radu2004GOLD radu radu2004 Data 6 octombrie 2013 15:25:05
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
struct nod {int val;int pret;nod *urm;};
nod *v[30001];
struct coada {int n;int p;};
coada use[30001];
int x,y,m,n,st[30001],prim ,ultim,x1,y1,p,i;
FILE *f,*g;
using namespace std;
void add (int x1,int y1,int p)
{
    nod *t;
    t=new nod;
    t->val=y1;
    t->pret=p;
    t->urm=v[x1];
    v[x1]=t;
    t=new nod;
    t->val=x1;
    t->pret=p;
    t->urm=v[y1];
    v[y1]=t;
}
int main()
{ f=fopen ("sate.in","r");
 g=fopen ("sate.out","w");
  fscanf (f,"%d%d%d%d",&n,&m,&x,&y);
  for (i=1;i<=m;i++)
  {
      fscanf (f,"%d%d%d",&x1,&y1,&p);
      add (x1,y1,p);

  }
 use [x].n=1;
 prim=1;
 ultim=1;
 st[prim]=x;
 nod *t;
 while (use [y].n==0)
 {
     for (t=v[st[prim]];t!=NULL;t=t->urm) if (use[t->val].n==0) {use[t->val].n=1;
                                                                 if (t->val>st[prim]) use[t->val].p=use[st[prim]].p+t->pret;
                                                                         else use[t->val].p=use[st[prim]].p-t->pret;
                                                                 st[++ultim]=t->val;
                                                                 if (t->val==y) break;}
                    prim ++;


 }
 fprintf (g,"%d",use[y].p);


    return 0;
}