Cod sursa(job #1721551)

Utilizator liviu23Liviu Andrei liviu23 Data 25 iunie 2016 21:09:38
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
#include <queue>
#define DIM 30005
using namespace std;

vector<pair<int,int> > adj[DIM];
int n,m,x,y,dist[DIM];
ofstream fout("sate.out");

int traverse() {
    queue<int> q;
    q.push(x);
    dist[x]=1;
    while(!q.empty()) {
        int u=q.front();
        for(int i=0;i<adj[u].size();i++)
            if(dist[adj[u][i].first]==0) {
                dist[adj[u][i].first]=dist[u]+adj[u][i].second;
                q.push(adj[u][i].first);
                if(adj[u][i].first==y)
                    return dist[y]-1;
            }
        q.pop();
    }
    return dist[y]-1;
}

int main()
{
    ifstream fin("sate.in");

    fin>>n>>m>>x>>y;
    int a,b,c;
    for(int i=1;i<=m;i++) {
        fin>>a>>b>>c;
        adj[a].push_back({b,c});
        adj[b].push_back({a,-c});
    }
    fout<<traverse();
    return 0;
}