Skip to content

Commit 920c1d6

Browse files
Graph
1 parent f8ce1f5 commit 920c1d6

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

CSES-Problem-Set/flight-routes.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// link : https://cses.fi/problemset/task/1196/
2+
#include<bits/stdc++.h>
3+
using namespace std;
4+
#define int long long
5+
const int N=1e5+10;
6+
const int INF=1e18;
7+
int n,m,k;
8+
vector<vector<int>> dijkstra(int s,int n,vector<pair<int,int>>g[]){
9+
vector<vector<int>>distance(n+1);
10+
multiset<pair<int,int>>st;
11+
st.insert({0,s});
12+
13+
while(st.size()>0){
14+
auto node=*st.begin();
15+
int v=node.second;
16+
int dist=node.first;
17+
st.erase(st.begin());
18+
19+
if(size(distance[v])>=k)continue;
20+
distance[v].push_back(dist);
21+
for(auto it:g[v]){
22+
int child_v=it.first;
23+
int wt=it.second;
24+
st.insert({wt+dist,child_v});
25+
}
26+
}
27+
return distance;
28+
}
29+
signed main() {
30+
cin>>n>>m>>k;
31+
vector<pair<int,int>>g[n+1];
32+
for(int i=0;i<m;i++){
33+
int x,y,wt;
34+
cin>>x>>y>>wt;
35+
g[x].push_back({y,wt});
36+
}
37+
vector<vector<int>>res=dijkstra(1,n,g);
38+
for(int i=0;i<k;i++){
39+
cout<<res[n][i]<<" ";
40+
}
41+
cout<<endl;
42+
return 0;
43+
}

0 commit comments

Comments
 (0)