Paste Search Dynamic
Recent pastes
mx
  1. #include <iostream>
  2. using namespace std;
  3. #define INF 1000000
  4.  
  5. int main() {
  6.         // your code goes here
  7.         int n,h,x;      cin>>n>>h>>x;
  8.         int arr[h];for(int i=0;i<h;i++)cin>>arr[i];
  9.        
  10.         int mx[n+1][n+1];
  11.         for (int i=0;i<=n;i++)
  12.         for (int j=0;j<=n;j++){
  13.                 if(i==j)mx[i][j]=0;
  14.                 else mx[i][j]=INF;
  15.         }
  16.            
  17.         for(int i=1;i<n;i++){
  18.                 int u,v;        cin>>u>>v;
  19.                 mx[u][v]=mx[v][u]=1;
  20.         }
  21.        
  22.         int dist[n+1][n+1];
  23.         for (int i=0;i<=n;i++)
  24.         for (int j=0;j<=n;j++)
  25.             dist[i][j]=mx[i][j];
  26.                        
  27.         for (int k = 1;k <= n; k++) {
  28.         for (int i = 1; i <= n; i++) {      
  29.             for (int j = 1; j <= n; j++) {
  30.                         dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
  31.             }
  32.         }
  33.     }
  34.         int count=0;
  35.         for(int j=1;j<=n;j++){
  36.                 int flag=1;
  37.                 for(int i=0;i<h;i++){
  38.                         if(dist[j][arr[i]]>x || dist[arr[i]][j]>x)
  39.                                 flag=0;
  40.                 }
  41.                 if(flag==1){
  42.                 count++;
  43.                 }
  44.         }
  45.        
  46.         cout<<count<<endl;
  47.        
  48.         return 0;
  49. }
  50.  
  51.  
Parsed in 0.005 seconds