Pagini recente » Cod sursa (job #3187527) | Cod sursa (job #3184400) | Cod sursa (job #1639169) | Borderou de evaluare (job #2205438) | Cod sursa (job #3184932)
#include <fstream>
#include <queue>
#include <vector>
#define sz 50000
#define INF 0x3FFFFFFF
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m;
vector<pair<int,int>> v[sz + 5];
int d[sz + 5];
struct mch
{
int nod;
int cost;
bool operator < (mch b) const
{
return cost > b.cost;
}
};
priority_queue<mch> q;
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,z;
fin>>x>>y>>z;
v[x].push_back({z,y});
v[y].push_back({z,x});
}
for(int i=1;i<=n;i++)
d[i]=INF;
d[1]=0;
q.push({1,0});
while(!q.empty())
{
mch fr = q.top();
q.pop();
if(fr.cost != d[fr.nod])
continue;
for(auto& i : v[fr.nod])
{
int vec = i.second;
int cost = i.first;
if(fr.cost + cost < d[vec])
d[vec]=fr.cost+cost,q.push({vec,d[vec]});
}
}
for(int i=2;i<=n;i++)
if(d[i]==INF)
fout<<0<<' ';
else
fout<<d[i]<<' ';
}