Advertisement
FokaKefir

Futar

Jul 9th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #define N 2000
  4. using namespace std;
  5.  
  6. bool bt[N+1][N+1];
  7. int v[N+1],p[N+1];
  8. int n,m,a,b,k,ut[N+1],csp;
  9. int main(){
  10.     freopen("file.in", "r", stdin);
  11.     freopen("file.out", "w", stdout);
  12.     scanf("%d%d%d", &n,&k,&m);
  13.     for (int i = 0; i < m; ++i) {
  14.         scanf("%d%d", &a, &b);
  15.         bt[a][b]=1;
  16.         bt[b][a]=1;
  17.     }
  18.     for (int i = 1; i <=n; ++i)
  19.         v[i]=n+1;
  20.     while(cin>>a){
  21.         v[a]=1;
  22.         csp=a;
  23.         for (int i = 0; i <=n; ++i)
  24.             p[i]=0;
  25.         p[csp]=1;
  26.         int e=1, u=1;
  27.         ut[u]=1;
  28.         while(e<=u){
  29.             for (int i = 0; i <=n; ++i)
  30.                 if(bt[ut[e]][i]==1 && p[i]==0){
  31.                     ut[++u]=i;
  32.                     p[i]=p[csp]+1;
  33.                 }
  34.             e++;
  35.         }
  36.         for (int i = 1; i <=n; ++i)
  37.             if(v[i]!=1 && v[i]>p[i] && p[i]!=0) v[i]=p[i];
  38.  
  39.     }
  40.     int maxi=v[1];
  41.     for (int i = 1; i <=n; ++i) {
  42.         //if(v[i]>k+1)
  43.             printf("%d ",v[i]);
  44.         maxi=max(maxi,v[i]);
  45.     }
  46.     if(maxi%k==0)
  47.         printf("\n%d", maxi/k);
  48.     else printf("\n%d", maxi/k+1);
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement