Cod sursa(job #319006)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 30 mai 2009 11:31:00
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <vector>
#define Nmax 100024
using namespace std;
vector <int> G[Nmax];
long  Cost[30000][15000];
long long C;
int coada[Nmax],i,sum,N,M,prim,Y,X,ultim,viz[Nmax],drum[Nmax],poz;
int BFS(int x)
{ viz[x]=-1;
  coada[0]=x;
  while(prim<=ultim && !viz[Y])
  {
   x=coada[prim++];
   for(i=0;i<G[x].size();i++)
      if( !viz[G[x][i]] )
      {
        viz[G[x][i]]=x;
        coada[++ultim]=G[x][i];
      }
   }
}          
int main()
{int z,y;
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d %d %d %d",&N,&M,&X,&Y);
    while(M--)
    {
      scanf("%d %d",&z,&y);
      G[z].push_back(y);
      G[y].push_back(z);
      scanf("%lld",&C);
      Cost[z][y]=C;
      Cost[y][z]=C;
    } 
    BFS(X);
drum[0]=Y;poz=0;
    while(viz[drum[poz]]!=-1)
      drum[++poz]=viz[drum[poz-1]];
for(i=poz;i>=0;i--) 
{if(drum[i]<drum[i+1]) sum-=Cost[drum[i]][drum[i+1]];
 else sum+=Cost[drum[i]][drum[i+1]];
 
} 

printf("%d",sum); 
return 0;
}