Cod sursa(job #1396522)

Utilizator katakonst94Pirvu Constantin Catalin katakonst94 Data 22 martie 2015 17:20:08
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <queue>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
long c[31000];
int y;
vector <pair<int,int> >graf[31000];
void bfs(int nod,int m,long o[])
{

queue <int> que;
que.push(nod);
queue < int>::size_type s;
char vis[31000]={};
o[nod]=0;
s=que.size();
while(s)
{

int nd=que.front();
for(int i=0;i<graf[nd].size();i++)
{
    if(vis[graf[nd][i].second]==0){
      if(o[graf[nd][i].second]>=o[nd]+graf[nd][i].first){
      que.push(graf[nd][i].second);
      o[graf[nd][i].second]=o[nd]+graf[nd][i].first;


      }
      vis[graf[nd][i].second]=1;

}
}

que.pop();
s=que.size();
}



}

int main()
{
    int n,m,x;
f>>n>>m>>x>>y;
for(int i=1;i<=m;i++)
{

    int m1,m2,c;
    f>>m1>>m2>>c;
     graf[m1].push_back(make_pair(c, m2));
     graf[m2].push_back(make_pair(-c, m1));
}
for(int i=1;i<=n;i++){
c[i]=1<<28;
}
bfs(x,n,c);
g<<c[y]<<"  ";
//bfs(y,n,c2);




    return 0;
}