Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<vector>
- #include<queue>
- using namespace std;
- typedef long long int ll;
- typedef pair<int,int> pii;
- int main()
- {
- int n,m;
- ll k;
- scanf("%d %d %lld",&n,&m,&k);
- int ans;
- vector<pii> adj[n+1];
- for(int i=0;i<m;i++){
- int u,v;
- ll w;
- scanf("%d %d %lld",&u,&v,&w);
- adj[u].push_back({w,v});
- adj[v].push_back({w,u});
- }
- ll dist[n+1];for(int i=0;i<=n;i++)dist[i] = 2e18;
- bool visited[n+1];for(int i=0;i<=n;i++)visited[i] = false;
- queue<int> q;
- q.push(1);
- dist[1] = 0;
- while(!q.empty()){
- int u = q.front();
- q.pop();
- if(visited[u])continue;
- visited[u] = true;
- for(int i=0;i<adj[u].size();i++)
- {
- int v = adj[u][i].second;
- ll w = adj[u][i].first;
- if(!visited[v] && dist[u] + w < dist[v]){
- dist[v] = dist[u] + w;
- q.push(v);
- }
- }
- }
- for(int i=1;i<=n;i++){
- if(dist[i] <= k){
- ans = i;
- }
- }
- printf("%d",ans);
- }
Advertisement
Add Comment
Please, Sign In to add comment