Advertisement
Slayerfeed

Tower programming th

Apr 13th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. #include <stdio.h>
  5. using namespace std;
  6.  
  7.  
  8. vector<int> g[100010];
  9. bool visited[100010];
  10. int e[100010];
  11.  
  12. int main(){
  13.     int k , n ,m;
  14.     scanf("%d%d%d",&k,&n,&m);
  15.     int u ,v;
  16.     for(int i=1;i<=m;++i){
  17.         scanf("%d%d",&u,&v);
  18.         g[u].push_back(v);
  19.     }
  20.     queue<int> q;
  21.  
  22.     q.push(1);
  23.     e[1]=0;
  24.     int max1=-1e9;
  25.     for(int i=2;i<=n;++i){
  26.         e[i]=10000000;
  27.     }
  28.     while(!q.empty()){
  29.         int y=q.front();
  30.         q.pop();
  31.         if(max1<y){
  32.                 max1=y;
  33.             }
  34.         visited[y]=true;
  35.         if(e[y]+1<=k){
  36.             for(auto c: g[y]){
  37.                 if(!visited[c]){
  38.                     q.push(c);
  39.                     visited[c]=true;
  40.                     if(e[c]>e[y]+1){
  41.                             e[c]=e[y]+1;
  42.                     }
  43.                 }
  44.             }
  45.         }
  46.     }
  47.  
  48.  
  49.  
  50.     cout << max1;
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement