Pagini recente » Cod sursa (job #1964032) | Cod sursa (job #2437563) | Cod sursa (job #1563247) | Cod sursa (job #2480045) | Cod sursa (job #2674238)
#include <bits/stdc++.h>
#define ll long long int
#define double long double
#define pb push_back
#define endl '\n'
#define er erase
#define sz size
#define in insert
#define mp make_pair
#define f first
#define s second
#define mod 1000000007
#define inf 1000000000
using namespace std;
ll a[1000][1000], n, s, t, p; /// s - starting vertice; t - ending vertice;
struct str
{
ll distanta, sursa, stare;
} v[1000];
ll find()
{
for(ll i=1;i<=n;i++)
if(v[i].stare==1) return i;
return 0;
}
void dijkstra(ll x)
{
for(ll y=1;y<=n;y++)
{
if(a[x][y]!=0 && v[x].stare!=2)
{
if( (v[x].distanta+a[x][y])<v[y].distanta )
{
v[y].distanta=v[x].distanta+a[x][y];
v[y].sursa=y;
v[y].stare=1;
}
}
}
v[x].stare=2;
}
int main(){
cin>>n>>p;
for(ll i=1;i<=p;i++)
{
ll x,y,z;
cin>>x>>y>>z;
a[x][y]=z;
a[y][x]=z;
}
s=1;
v[s].distanta=0;
v[s].sursa=s;
v[s].stare=1;
for(ll i=1;i<=n;i++)
{
if(i!=s)
{
v[i].distanta=inf;
v[i].sursa=i;
v[i].stare=0;
}
}
while(find())
{
dijkstra(find());
}
for(ll i=2;i<=n;i++)
cout<<v[i].distanta<<' ';
return 0;
}