Pagini recente » Cod sursa (job #2511063) | Cod sursa (job #2119753) | Cod sursa (job #757107) | Cod sursa (job #761228) | Cod sursa (job #2416857)
#include <bits/stdc++.h>
#define NMAX 50009
#define INF 999999999
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
long long int D[NMAX];
struct nume{long long int x;long long int c;};
struct nume1{long long int x;};
vector <nume> g[NMAX];
bool uz[NMAX];
bool operator <(nume1 a, nume1 b)
{
D[a.x]>D[b.x];
}
priority_queue <nume1 , vector<nume1> >H;
int n,m;
void citire();
void djk(int start);
int main()
{citire();
djk(1);
return 0;
}
void citire()
{int x,y,c;
int i;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y>>c;
g[x].push_back({y,c});
g[y].push_back({x,c});
}
}
void djk(int start)
{
int i;
nume1 act,vec;
for(i=0;i<NMAX;i++)
D[i]=INF;
D[start]=0;uz[start]=1;H.push({start});
while(!H.empty())
{
act=H.top();H.pop();uz[act.x]=0;
for(i=0;i<g[act.x].size();i++)
{
if(D[act.x]+g[act.x][i].c<D[g[act.x][i].x])
{
D[g[act.x][i].x]=D[act.x]+g[act.x][i].c;
if(!uz[g[act.x][i].x])
{
uz[g[act.x][i].x]=1;
H.push({g[act.x][i].x});
}
}
}
}
for(int i=2;i<=n;i++)
fout<<D[i]<<" ";
}