Cod sursa(job #1311450)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 8 ianuarie 2015 10:45:37
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <cstdio>
#include <fstream>
#include <vector>
#include <cstring>
#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;
char s[30];
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.getline(s,30);
            j=0;
            while (s[j]!=' ')
                x=x*10+s[j++]-'0';
            j++;
            while (s[j]!=' ')
                y=y*10+s[j++]-'0';
            j++;
            while (j<strlen(s))
                d=d*10+s[j++]-'0';

            memset(s,0,30);

            f>>x>>y>>d;

            v[x].push_back(y);
            v[x].push_back(d);


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