Cod sursa(job #695614)

Utilizator irene_mFMI Irina Iancu irene_m Data 28 februarie 2012 13:25:44
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int N = 30005;

vector < pair <int, int> > G[N];
vector < pair <int, int> >::iterator it;
queue < int > Q;
int viz[N], Y;
int D[N];

void bfs(int x)
{
     Q.push(x);
     viz[x]=1;
     while (!Q.empty())
     {
           int y = Q.front();
           Q.pop();
           for (it=G[y].begin();it!=G[y].end();++it)
               if (!viz[(*it).first])           
               {
                  viz[(*it).first]=1;
                  D[(*it).first]=D[y]+(*it).second;
                  Q.push((*it).first);
                  if ((*it).first == Y)         
                     return;
               }
     }
}

int main(int argc, char *argv[])
{
    ifstream in("sate.in");
    ofstream out("sate.out");
    int n,m,x,i,j,d;
    
    in>>n>>m>>x>>Y;
    for (; m; --m)
    {
        in>>i>>j>>d;
        G[i].push_back(make_pair(j,d));
        G[j].push_back(make_pair(i,d));
    }
    bfs(x);
    out<<D[Y];
    
    return 0;
}