Pagini recente » Cod sursa (job #2729812) | Cod sursa (job #1474072) | Cod sursa (job #2630219) | Cod sursa (job #2605591) | Cod sursa (job #2605590)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
struct drum
{
int y;
long long len;
drum(int y, long long len)
{
this->y=y;
this->len=len;
}
bool operator<(drum b) const
{
return len<b.len;
}
};
struct nodS
{
vector <drum> vecini;
long long len;
};
int n,m,i,x,y;
long long cost;
nodS nod[50005];
multiset <drum> s;
void dijkstra()
{
while(!s.empty())
{
int poz=s.begin()->y;
long long len=s.begin()->len;
s.erase(s.begin());
if(nod[poz].len!=-1)
continue;
nod[poz].len=len;
for(auto it : nod[poz].vecini)
{
if(nod[it.y].len==-1)
s.insert(drum(it.y, len+it.len));
}
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y>>cost;
nod[x].vecini.push_back(drum(y, cost));
nod[y].vecini.push_back(drum(x, cost));
}
for(i=1;i<=n;i++)
nod[i].len=-1;
s.insert(drum(1, 0));
dijkstra();
for(i=2;i<=n;i++)
fout<<nod[i].len<<' ';
return 0;
}