Cod sursa(job #831462)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 8 decembrie 2012 17:47:48
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
int x,y,d,s,f,acum,n,m;
bool viz[100005];
struct drum{ int u, c;}; //unde ajung, cat ma costa
deque  <int> q;
vector <drum> l[100050];
int nivel[30000];
int main(){
    ifstream in("sate.in"); ofstream out("sate.out");
    in>>n>>m>>s>>f; //n sate, m drumuri
    for(int i=1;i<=m;++i){
        in>>x>>y>>d;
        l[x].push_back(drum{y, d});
        l[y].push_back(drum{x,-d});
    }
    q.push_back(s); viz[s]=1; nivel[s]=0;
    while(!q.empty()){
        acum=q.front(); q.pop_front();
        viz[acum]=true;
        for(unsigned int i=0; i<l[acum].size(); ++i){
            if(viz[l[acum][i].u]==false){
                viz[l[acum][i].u]=true;
                nivel[l[acum][i].u]=nivel[acum]+l[acum][i].c;
                q.push_back(l[acum][i].u);
            }
        }
        if(acum==f) goto gata;
    }
    gata:
    out<<nivel[f]<<'\n';
    return 0;
}