Cod sursa(job #1128888)

Utilizator acomAndrei Comaneci acom Data 27 februarie 2014 19:09:11
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
vector < pair <int,int> > v[30005];
queue <int> q;
int n,m,s,f,x,y,c,viz[30005];
bool ok;
int main()
{
    int i;
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&s,&f);
    for (i=1;i<=m;++i)
    {
        scanf("%d%d%d",&x,&y,&c);
        v[x].push_back(make_pair(y,c));
        v[y].push_back(make_pair(x,c));
    }
    q.push(s);
    while (!q.empty() && !ok)
    {
        x=q.front(); q.pop();
        for (i=0;i<v[x].size();++i)
        {
            y=v[x][i].first, c=v[x][i].second;
            if (!viz[y])
            {
                if (y>x) viz[y]=viz[x]+c;
                else viz[y]=viz[x]-c;
                q.push(y);
            }
            if (y==f)
            {
                ok=true;
                break;
            }
        }
    }
    printf("%d\n",viz[f]);
    return 0;
}