Cod sursa(job #748368)

Utilizator GrimpowRadu Andrei Grimpow Data 13 mai 2012 13:01:13
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>
#define NMAX 30011
using namespace std;
vector <pair <int,int> > G[NMAX];
int n,m,X,Y,q[NMAX],dist[NMAX];
void read(){
     int i,x,y,c;
     ifstream f("sate.in");
     f>>n>>m>>X>>Y;
     for(i=1;i<=m;i++){
      f>>x>>y>>c;
      G[x].push_back(make_pair(y,c));
      G[y].push_back(make_pair(x,-c));
     }
     f.close();
}
void solve(){
     int i,j,k,nod;
     if(X>Y) swap(X,Y);
     q[1]=X;
     dist[X]=1;
     k=1;
     for(i=1;i<=k;i++){
      nod=q[i];
      for(j=0;j<G[nod].size();j++){
       if(!dist[G[nod][j].first]){
        q[++k]=G[nod][j].first;
        dist[G[nod][j].first]=dist[nod]+G[nod][j].second;
        if(G[nod][j].first==Y) return;
       }
      }
     }
}
void write(){
     ofstream g("sate.out");
     g<<dist[Y]-1<<"\n";
     g.close();
}
int main(){
    read();
    solve();
    write();
    return 0;
}