Cod sursa(job #761994)

Utilizator Theorytheo .c Theory Data 28 iunie 2012 11:47:10
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#define nmax 30004
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int i, j ,n , m , x, y, k ;
bool viz[nmax];


int c[nmax *100];
vector <pair <int,int> > G[nmax];
int dis[nmax];
int bfs(int x,int y)
{
    int i, j;
    int p = 1;
    int u = 1;
    if(x>y)
        swap(x,y);
    viz[x] = true;
    c[1] = x;
    while(p<=u){
        for(i = 0, x = c[p]; i < G[x].size(); i++)
        {
            if(viz[G[x][i].first] == false )
            {
                viz[c[++u] = G[x][i].first] = true;


                    dis[G[x][i].first] = dis[x] + G[x][i].second;

                if(dis[y])
                    return dis[y];


            }
        }
        ++p;
    }

    return dis[y] ;


}
void read()
{
    int i,j , d;


   fin >> n >> m >> x >>y;


    for(k =1; k <= m ;k++)
    {

        fin >> i >> j >>d;
        G[i].push_back(make_pair(j,d));
        G[j].push_back(make_pair(i,-d));

    }
    fout << bfs(x,y);

}
int main()
{

    read();
   fin.close();
    return 0;
}