Cod sursa(job #951878)

Utilizator RaduDoStochitoiu Radu RaduDo Data 22 mai 2013 08:15:51
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#define maxn 30010
using namespace std;
queue < pair < int, int > > q;
vector < pair < int, int > > G[maxn];
int sel[maxn],n,m,S1,S2,x,y,c,i,sum;
int main()
{
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&S1,&S2);
    while(m--)
    {
        scanf("%d%d%d",&x,&y,&c);
        G[x].push_back(make_pair(y,c));
        G[y].push_back(make_pair(x,c));
    }
    q.push(make_pair(S1,0));
    while(!q.empty())
    {
        x=q.front().first;
        sum=q.front().second;
        sel[x]=1;
        if(x==S2) break;
        for(i=0; i<G[x].size(); ++i)
            if(!sel[G[x][i].first])
            {
                if(G[x][i].first<x) q.push(make_pair(G[x][i].first, sum-G[x][i].second));
                    else q.push(make_pair(G[x][i].first, sum+G[x][i].second));
            }
        q.pop();
    }
    if(sum<0) sum=-sum;
    printf("%d\n",sum);
    return 0;
}