Cod sursa(job #876231)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 11 februarie 2013 16:38:46
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>
#define INF 1000000000
using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

struct cs{
long long nod,cost;
};

vector<cs> G[50001];
cs aux;
bool uz[50001];
long long n,m,i,j,cnt,mn,mni,x,y,c,dist[50001],a;

int main()
{f>>n>>m;
for(i=1;i<=m;i++)
{
    f>>x>>y>>c;
    aux.nod=x;
    aux.cost=c;
    G[y].push_back(aux);
    aux.nod=y;
    G[x].push_back(aux);
}

for(i=2;i<=n;i++)
dist[i]=INF;

dist[1]=0;

cnt=1;
mni=1;
while(cnt<=n)
{mn=INF;
for(i=0;i<G[mni].size();i++)
{if(dist[G[mni][i].nod]>dist[mni]+G[mni][i].cost)
    dist[G[mni][i].nod]=dist[mni]+G[mni][i].cost;

    if(uz[G[mni][i].nod]==0)
    {

    if(mn>G[mni][i].cost)
    {
        mn=G[mni][i].cost;
        j=G[mni][i].nod;
    }
    }
}
    cnt++;
    uz[mni]=1;
    mni=j;
}

for(i=2;i<=n;i++)
g<<dist[i]<<' ';

f.close();
g.close();
    return 0;
}