zoukankan      html  css  js  c++  java
  • 图的遍历 | 1013 连通块块数

    dfs解法:

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 1010
    #define MAX 0x06FFFFFF
    #define V vector<int>
    
    using namespace std;
    
    int n,m,k; 
    vector<int> g[LEN];
    int vis[LEN];
    int bk;
    
    void dfs(int s){
        int size=g[s].size();
        int i;
        vis[s]=1;
        for(i=0;i<size;i++){
            int o=g[s][i];
            if(vis[o]==0 && o!=bk)
                dfs(o);
        }
        
    }
    
    int main(){
    //    freopen("1016.txt","r",stdin);
        int a,b,i,j;
        I("%d%d%d",&n,&m,&k);
        FF(i,m){
            I("%d%d",&a,&b);
            g[a].push_back(b);
            g[b].push_back(a);
        }
        FF(i,k){
            I("%d",&bk);
            memset(vis,0,sizeof vis) ;
            int ans=0;
            for(j=1;j<=n;j++){
                if(j!=bk && vis[j]==0){
                    dfs(j);
                    ans++;
                }
            }
            printf("%d
    ",ans-1) ;
        }
        return 0;
    }
  • 相关阅读:
    C语言作业9
    C语言作业8
    学习体会
    C语言作业7
    C语言作业6
    C语言作业5
    C语言作业4
    C语言作业3
    丛铭俣 160809324 (作业12)
    丛铭俣 160809324 (作业10)
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8510892.html
Copyright © 2011-2022 走看看