Cod sursa(job #2106524)

Utilizator tzeapa2000qqqqq QQQQQQQQQ tzeapa2000 Data 15 ianuarie 2018 20:57:12
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
#define INF 200000
using namespace std;

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

struct graf
{
    int nod,cost;
    graf *leg;
};
struct qq
{
    int d,t;
    bool viz;
}v[50001];
graf *G[50001];
void add(int x,int y,int c)
{
    graf *p=new graf;
    p->nod=y;
    p->cost=c;
    p->leg=G[x];
    G[x]=p;
}
int n,m;

void dijk()
{
    for(int i=2;i<=n;i++)
        v[i].d=INF;
    for(int i=1;i<=n;i++)
    {
        int mini=INF,poz;
        for(int j=1;j<=n;j++)
            if(v[j].d<mini and !v[j].viz)
                mini=v[j].d,poz=j;
        v[poz].viz=true;
        for(graf *p=G[poz];p;p=p->leg)
            if(v[p->nod].d>v[poz].d+p->cost)
                v[p->nod].d=v[poz].d+p->cost;
    }

}
int main()
{
    f>>n>>m;
    int x,y,c;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y>>c;
        add(x,y,c);
    }
    dijk();
    for(int i=2;i<=n;i++)
        if(v[i].d==INF)
            g<<0<<' ';
        else g<<v[i].d<<' ';
    return 0;
}