Cod sursa(job #1681861)

Utilizator cuteangel14Carmen Monoranu cuteangel14 Data 9 aprilie 2016 19:26:42
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include <fstream>
#include<vector>
#include<utility>
using namespace std;
vector< vector <pair <int, int> > > a;
int n,m;
void dijkstra()
{
    for(int i=0;i<a[0].size();i++)
    {
        for(int j=0;j<a[0].size();j++)
        {
            if(i!=j)
            {
                for(int k=0;k<a[a[0][j].first].size();k++)
                {
                    if(a[a[0][j].first][k].first==a[0][i].first&&a[0][i].second>a[0][j].second+a[a[0][j].first][k].second)
                    {
                        a[0][i].second=a[0][j].second+a[a[0][j].first][k].second;
                        break;
                    }
                }
            }
        }
    }
}
int main()
{
    ifstream f("dijkstra.in");
    ofstream g("dijkstra.out");
    f>>n>>m;
    a.resize(n);
    for(int i=1;i<n;i++)
    {
        a[0].push_back(make_pair(i,250001));
    }
    for(int i=1;i<=m;i++)
    {
        int x,y,c;
        f>>x>>y>>c;
        x--;
        y--;
        if(x==0)
        {
            for(int j=0;j<a[0].size();j++)
            {
                if(a[0][j].first==y)
                    a[0][j].second=c;
            }
        }
        else
        a[x].push_back(make_pair(y,c));
    }
    dijkstra();
    for(int i=0;i<a[0].size();i++)
    {
        g<<a[0][i].second<<" ";
    }
    return 0;
}