Pagini recente » Cod sursa (job #2427858) | Cod sursa (job #2679555) | Monitorul de evaluare | Cod sursa (job #915099) | Cod sursa (job #2447826)
# pragma GCC optimize("Ofast")
# pragma GCC optimization ("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define forn(i,a,b) for (int i = a; i <= b; i++)
#define fi(i,a,b) for (int i = a; i < b; i++)
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define rc(s) return cout<<s,0
#define er erase
#define in insert
#define pi pair <int, int>
#define pii pair <pi, pi>
# define sz(x) (int)((x).size())
int n,m;
vector<pi>v[50005];
set<pi>sett;
bool viz[50005];
int dis[50005];
void dfs(int nod){
viz[nod]=1;
fi(i,0,sz(v[nod])){
if(!viz[v[nod][i].F]){
viz[v[nod][i].F]=1;
sett.in(mp(v[nod][i].S+dis[nod], v[nod][i].F));
dis[v[nod][i].F]=v[nod][i].S+dis[nod];
}else{
if(v[nod][i].S+dis[nod]<dis[v[nod][i].F]){
sett.er(mp(dis[v[nod][i].F], v[nod][i].F));
sett.in(mp(v[nod][i].S+dis[nod],v[nod][i].F));
dis[v[nod][i].F]=dis[nod]+v[nod][i].S;
}
}
}
}
int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin>>n>>m;
forn(i,1,m){
int x,y,z;
cin>>x>>y>>z;
v[x].pb(mp(y,z));
}
sett.in(mp(0,1));
while(!sett.empty()){
int x=(*sett.begin()).S;
sett.erase(sett.begin());
dfs(x);
}
forn(i,2,n)cout<<dis[i]<<' ';
return 0;
}