Cod sursa(job #1864959)

Utilizator TarmureSerban99Tarmure Dan Serban TarmureSerban99 Data 1 februarie 2017 09:54:51
Problema Ubuntzei Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
#include <limits.h>
#define X pair<int, int>
#define DN 100005
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
vector <X> a[100];
queue <int> Q;
int t[100],d[100],x1,viz[100];
int minim(int x)
{
    int b=DN, A=0;
    for(int i=0;i<a[x].size();++i)
        if(a[x][i].second<b) {b=a[x][i].second; A=a[x][i].first;}
    return A;
}
void djk(int x0)
{
    Q.push(x0);
    d[x0]=0;
    for(int i=0;i<a[x0].size();++i)
    {
       Q.push(a[x0][i].first);
       //g<<Q.back()<<" ";

       d[a[x0][i].first]=a[x0][i].second;

    }
    viz[Q.front()]=1;
    Q.pop();

   // g<<endl<<Q.size()<<endl;
    while(!Q.empty())
    {

    for(int i=0;i<a[Q.front()].size();++i)
    {
        if(viz[Q.front()]==0)
        {
          Q.push(a[Q.front()][i].first);
        //cout<<a[Q.front()][i].first<<" ";
        if(d[a[Q.front()][i].first]>d[Q.front()]+a[Q.front()][i].second)

            d[a[Q.front()][i].first]=d[Q.front()]+a[Q.front()][i].second;
        }

    }
    viz[Q.front()]=1;
    Q.pop();


    }

}

int main()
{
    int n,m,x,y,i,l;
    f>>n>>m>>x1;
    for(i=0;i<m;++i)
    {
        f>>x>>y>>l;
        a[x].push_back(X(y,l));
        a[y].push_back(X(x,l));
    }

    for(i=1;i<=n;++i)
        d[i]=DN;
        djk(1);
    g<<d[n]<<" ";





    return 0;
}