Nu aveti permisiuni pentru a descarca fisierul grader_test12.in
Cod sursa(job #677598)
Utilizator | Data | 10 februarie 2012 13:10:59 | |
---|---|---|---|
Problema | Sate | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.9 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;
}