Pagini recente » Cod sursa (job #329581) | Cod sursa (job #176160) | Cod sursa (job #1483319) | Cod sursa (job #1357702) | Cod sursa (job #2964712)
#define inf 0x3f3f3f3f
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n, m, nod_start, dmin[101];
bool viz[101];
int p[101][101], q[101][101];
struct pereche{
int nod;
int d;
};
auto cmp = [](pereche a, pereche b)
{
return a.d < b.d;
};
priority_queue<pereche, vector<pereche>, decltype(cmp)> Q(cmp);
/**void dijkstra()
{
for(int i = 1; i <= n; i++)
dmin[i] = inf;
dmin[nod_start] = 0;
Q.push({nod_start, 0});
while(!Q.empty())
{
pereche t = Q.top();
Q.pop();
if(viz[t.nod])
continue;
viz[t.nod] = 1;
for(int i = 1; i <= n; i++)
{
if(p[t.nod][i])
{
if(dmin[i] > dmin[t.nod] + q[t.nod][i])
{
dmin[i] = dmin[t.nod] + q[t.nod][i];
Q.push({i, dmin[i]});
}
}
}
}
}*/
void bf()
{
for(int i = 1; i <= n; i++)
dmin[i] = inf;
dmin[1] = 0;
Q.push({1, 0});
while(!Q.empty())
{
pereche t = Q.top();
Q.pop();
viz[t.nod] = 0;
for(int i = 1; i <= n; i++)
{
if(p[t.nod][i])
{
if(dmin[i] > dmin[t.nod] + q[t.nod][i])
dmin[i] = dmin[t.nod] + q[t.nod][i];
if(!viz[i])
{
Q.push({i, dmin[i]});
viz[i] = 1;
}
}
}
}
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
int a, b, c;
fin >> a >> b >> c;
p[a][b] = 1;
q[a][b] = c;
}
//dijkstra();
bf();
for(int i = 2; i <= n; i++)
fout << dmin[i] << " ";
return 0;
}