Cod sursa(job #343405)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 25 august 2009 18:54:30
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <vector>
#define Nmax 30005
#define Mmax 100025
using namespace std;

vector<pair <int,int> > A[Nmax];
int USE[Nmax];
int n,m,x,y,i,s1,s2,d;
int Q;

int bf(int x,int rez){
    int f;
    vector< pair<int,int> >:: iterator it;
    for(it=A[x].begin(); it!=A[x].end(); it++){
      if(USE[it-> first]==0) {
     		if( it-> first == y){
         	rez += it-> second;
         	Q=rez;
         	USE[y]=1;
            return 0;
         }
         else{
         	rez += it-> second;
         	f = it-> first;
         	USE[f]=1;
            bf(f, rez);
            USE[f]=0;
         }
       }
    }
    
}

int main(){
	freopen("sate.in","r",stdin);
   freopen("sate.out","w",stdout);
   scanf("%d%d%d%d",&n,&m,&x,&y);
   for(i=1;i<=n;++i){
   	scanf("%d%d%d",&s1,&s2,&d);
      A[s1].push_back(make_pair(s2,d));
      A[s2].push_back(make_pair(s1,-d));
   }

   USE[x]=1;
   bf(x,0);
   printf("%d\n",Q);

   fclose(stdin); fclose(stdout);
   return 0;
}