Cod sursa(job #134486)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 11 februarie 2008 19:49:32
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include <stdio.h>
#include <stdlib.h>
#include <bitset>

using namespace std;

long n,m,x,y,p,q,i,dim,ok,nod;
long l[30005],cl[30005],a[30005],b[30005],c[30005];
//vector <long>v[30002];
int *v[30002];
int g[30002],*point;
bitset <30002>mark;

int main(){
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    
    scanf("%ld %ld %ld %ld",&n,&m,&x,&y);
    for (i=1;i<=m;i++){
        scanf("%ld %ld %ld",&a[i],&b[i],&c[i]);
        g[a[i]]+=2;
        g[b[i]]+=2;
    }/*
    for (i=1;i<=n;i++){
        v[i]=(int *)malloc((g[i]+2)*sizeof(int));
        g[i]=0;
    }
    for (i=1;i<=m;i++){
        //scanf("%ld %ld %ld",&a,&b,&c);
        v[a[i]][++g[a[i]]]=b[i];
        v[a[i]][++g[a[i]]]=c[i];
        v[b[i]][++g[b[i]]]=a[i];
        v[b[i]][++g[b[i]]]=c[i];
    }
    for (i=1;i<=n;i++)
        v[i][++g[i]]=-1;
    /*    
    p=1;q=1;
    l[1]=x;
    mark[x]=1;
    cl[1]=0;
    
    for (;p<=q;p++){
        for (point=v[l[p]]+1;*point!=-1;point+=2)
            if (!mark[*point]){
               mark[*point]=1;
               l[++q]=*point;
               if (l[p]<l[q])
                  cl[q]=cl[p]+*(point+1);
               else cl[q]=cl[p]-*(point+1);
               if (l[q]==y){ok=1;break;}
            }
        if (ok){printf("%ld\n",cl[q]);return 0;}
    }
    /*
    while (p<=q){
          for (i=1;i<=g[l[p]];i+=2){
              nod=v[l[p]][i];
              if (!mark[nod]){
                 mark[nod]=1;
                 q++;
                 l[q]=nod;
                 if (l[p]<nod)
                    cl[q]=cl[p]+v[l[p]][i+1];
                 else
                     cl[q]=cl[p]-v[l[p]][i+1];
                 if (nod==y){ok=1;break;}
              }
          }
          if (ok){printf("%ld\n",cl[q]);return 0;}
          p++;
    }
    */
return 0;
}