Cod sursa(job #1052674)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 11 decembrie 2013 17:41:25
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define MAX_N 30001
using namespace std;

vector< pair<int,long long> > v[MAX_N];
queue<int> coada;
int viz[MAX_N],dist[MAX_N];
int main()
{
    int n,m,x,y,i,a,b,c;
    ifstream f("sate.in");
    ofstream g("sate.out");
    f>>n>>m>>x>>y;
    for(i=0;i<m;i++){
        f>>a>>b>>c;
        v[a].push_back(make_pair(b,c));
        v[b].push_back(make_pair(a,c));
    }

    coada.push(x);
    viz[x]=1;

    bool ok=true;
    while(!coada.empty() && ok){
        int el=coada.front();
        for(i=0;i<v[el].size();i++){
            if(viz[v[el][i].first]==0){
                if(v[el][i].first>el)
                    dist[v[el][i].first]=dist[el]+v[el][i].second;
                else
                    dist[v[el][i].first]=dist[el]-v[el][i].second;
                viz[v[el][i].first]=1;
                coada.push(v[el][i].first);
                if(v[el][i].first==y){
                    g<<dist[y];
                    //return 0;
                    break;
                    ok=false;
                }
            }
        }
        coada.pop();
    }
    return 0;
}