Pagini recente » Cod sursa (job #2670936) | Cod sursa (job #2427819) | Cod sursa (job #743950) | Cod sursa (job #1864195) | Cod sursa (job #3201762)
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#include <tuple>
#include <bitset>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int NMAX=100005, MMAX=250005;
vector<pair<int, int>> G[NMAX];
bitset<NMAX> viz;
priority_queue<pair<int, int>> pq;
int n, m, s=0, d[NMAX];
pair<int, int> sol[NMAX];
void citire()
{
fin>>n>>m;
for(int i=1; i<=m; ++i)
{
int x, y, c;
fin>>x>>y>>c;
G[x].push_back(make_pair(y, c));
G[y].push_back(make_pair(x, c));
}
}
void dijkstra(int start)
{
for(int i=1; i<=n; ++i)
d[i]=INT_MAX;
d[start]=0;
pq.push(make_pair(0, start));
while(!pq.empty())
{
int nodsrc=pq.top().second;
pq.pop();
if(viz[nodsrc])
continue;
viz[nodsrc]=1;
for(auto i: G[nodsrc])
{
if(d[i.first]>d[nodsrc]+i.second)
{
d[i.first]=d[nodsrc]+i.second;
pq.push(make_pair(-d[i.first], i.first));
}
}
}
}
int main()
{
citire();
dijkstra(1);
for(int i=2; i<=n; ++i)
fout<<d[i]<<" ";
}