Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int INF=2e9;
- using pii=pair<long long,int>;
- int main(){
- int n,m,k;
- scanf("%d %d %d",&n,&m,&k);
- priority_queue <pii,vector<pii>,greater<pii> > pq;
- vector <pii> g[n+1];
- vector <bool> visited(n+1,false);
- vector <long long> dis(n+1,INF);
- for(int i=0;i<m;i++){
- int u,v;
- long long w;
- scanf("%d %d %d",&u,&v,&w);
- g[u].push_back({v,w});
- g[v].push_back({u,w});
- }
- dis[1] = 0;
- pq.push({dis[1],1});
- while(!pq.empty()){
- int u=pq.top().second,d=pq.top().first;
- pq.pop();
- //if(visited[u]) continue;
- visited[u]=true;
- for(auto vw:g[u]){
- int v,w;
- v=vw.first;
- w=vw.second;
- if(visited[v]==false && dis[u]+w < dis[v]){
- dis[v] = dis[u] + w;
- pq.push({dis[v],v});
- }
- }
- }
- for(int i=n;i>=1;i--){
- if(dis[i]<=k){
- printf("%d",i);
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement