Cod sursa(job #1311440)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 8 ianuarie 2015 10:27:11
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <fstream>
#include <vector>
#define nmax 30005
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,prim,ultim,d;
vector <int> v[nmax];
int a[nmax],c[nmax*5],q;

void bfs()
{
    int p,u,i;
    a[prim]=0;
    c[1]=prim;
    p=1;u=1;
    while (p<=u) {
        q=c[p];
        for (i=0;i<v[q].size();i+=2) {
                    if (a[q]+v[q][i+1]<a[v[q][i]]) {
                                    a[v[q][i]]=a[q]+v[q][i+1];
                                    c[++u]=v[q][i];
                    }
        }
        p++;
    }

}

int main()
{
    int i,j;
    f>>n>>m>>prim>>ultim;
    for (i=1;i<=n;i++) a[i]=1<<30;
    for (i=1;i<=m;i++) {
            f>>x>>y>>d;
            v[x].push_back(y);
            v[x].push_back(d);


            v[y].push_back(x);
            v[y].push_back(-d);
    }
    bfs();
    g<<a[ultim];
    return 0;
}