圖的遍歷 pat1013

#include <iostream>
#include<vector>
#include<algorithm>
#include<cstring>
//1013,bfs
using namespace std;
const int N = 1005;
bool vis[N]={0};
vector<int> G[N];
int n, m, k;
int delPoint ;
void dfs(int v){
       if(v==delPoint) return;
       vis[v] =1;
       for(int i = 0;i < G[v].size();i++){
              if(vis[G[v][i]] == 0){
                     dfs(G[v][i]);
              }
       }
}

int main()
{
       freopen("1013.txt","r",stdin);
       cin>>n>>m>>k;
       int a, b;
       while(m--){
              cin>>a>>b;
              G[a].push_back(b);
              G[b].push_back(a);
       }

       while(k--){
              int block = 0;//必須放在循環裏面
              cin>>delPoint;
              memset(vis,0,sizeof(vis));//不能漏了
              for(int i = 1; i <= n; i++){//遍歷圖裏的所有點
                     if(i!=delPoint && vis[i]==0){
                            dfs(i);
                            block++;
                     }
              }
              printf("%d\n",block-1);
       }

    //cout << "Hello world!" << endl;
    return 0;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章