Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- #define N 2000
- using namespace std;
- bool bt[N+1][N+1];
- int v[N+1],p[N+1];
- int n,m,a,b,k,ut[N+1],csp;
- int main(){
- freopen("file.in", "r", stdin);
- freopen("file.out", "w", stdout);
- scanf("%d%d%d", &n,&k,&m);
- for (int i = 0; i < m; ++i) {
- scanf("%d%d", &a, &b);
- bt[a][b]=1;
- bt[b][a]=1;
- }
- for (int i = 1; i <=n; ++i)
- v[i]=n+1;
- while(cin>>a){
- v[a]=1;
- csp=a;
- for (int i = 0; i <=n; ++i)
- p[i]=0;
- p[csp]=1;
- int e=1, u=1;
- ut[u]=1;
- while(e<=u){
- for (int i = 0; i <=n; ++i)
- if(bt[ut[e]][i]==1 && p[i]==0){
- ut[++u]=i;
- p[i]=p[csp]+1;
- }
- e++;
- }
- for (int i = 1; i <=n; ++i)
- if(v[i]!=1 && v[i]>p[i] && p[i]!=0) v[i]=p[i];
- }
- int maxi=v[1];
- for (int i = 1; i <=n; ++i) {
- //if(v[i]>k+1)
- printf("%d ",v[i]);
- maxi=max(maxi,v[i]);
- }
- if(maxi%k==0)
- printf("\n%d", maxi/k);
- else printf("\n%d", maxi/k+1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement