Cod sursa(job #1094621)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 29 ianuarie 2014 17:26:10
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<vector>
using namespace std;

int n,m,start,fin,dist[30010],list[30010],nr;
vector <pair <int,int> > v[30010];

void citire() {

    ifstream in("sate.in");
    int i,x,y,c;
    in>>n>>m>>start>>fin;
    if(start>fin)
        swap(start,fin);
    for(i=1;i<=m;i++) {
        in>>x>>y>>c;
        v[x].push_back(make_pair(y,c));
        v[y].push_back(make_pair(x,-c));
    }
    in.close();

}

void solve() {

    int i,j,ok,nod;
    list[1]=start;
    dist[start]=0;
    nr=1;
    ok=1;
    for(i=1;i<=nr,ok==1;i++) {
        nod=list[i];
        for(j=0;j<v[nod].size();j++) {
            if(!dist[v[nod][j].first]) {
                nr++;
                list[nr]=v[nod][j].first;
                dist[v[nod][j].first]=dist[nod]+v[nod][j].second;
                if(v[nod][j].first==fin)
                    ok=0;
            }
        }
    }

}

void afisare() {

    ofstream out("sate.out");
    out<<dist[fin]<<'\n';
    out.close();

}

int main() {

    citire();
    solve();
    afisare();
    return 0;

}