美文网首页
无标题文章

无标题文章

作者: Otis4631 | 来源:发表于2017-11-18 13:51 被阅读0次

    数据结构实验:连通分量个数
    Time Limit: 1000MS Memory Limit: 65536KB
    Submit Statistic
    Problem Description

    在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,
    否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。
    例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。

    Input

    第一行是一个整数T,表示有T组测试样例(0 < T <= 50)。每个测试样例开始一行包括两个整数N,M,(0 < N <= 20,0 <= M <= 200)
    分别代表N个顶点,和M条边。下面的M行,每行有两个整数u,v,顶点u和顶点v相连。
    Output

    每行一个整数,连通分量个数。
    Example Input

    2
    3 1
    1 2
    3 2
    3 2
    1 2
    Example Output

    2
    1### 数据结构实验:连通分量个数

    Time Limit: 1000MS

    Memory Limit: 65536KB

    Submit

    Statistic

    Problem Description

    在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通。如果图中任意两个顶点之间都连通,则称该图为连通图,

    否则,称该图为非连通图,则其中的极大连通子图称为连通分量,这里所谓的极大是指子图中包含的顶点个数极大。

    例如:一个无向图有5个顶点,1-3-5是连通的,2是连通的,4是连通的,则这个无向图有3个连通分量。

    Input

    第一行是一个整数T,表示有T组测试样例(0 < T <= 50)。每个测试样例开始一行包括两个整数N,M,(0 < N <= 20,0 <= M <= 200)

    分别代表N个顶点,和M条边。下面的M行,每行有两个整数u,v,顶点u和顶点v相连。

    Output

    每行一个整数,连通分量个数。

    Example Input

    2
    3 1
    1 2
    3 2
    3 2
    1 2
    

    Example Output

    2
    1
    
    #include <iostream>
    #include <memory.h>
    using namespace std;
    #define MAX 52
    bool visitd[MAX];
    typedef struct  
    {
        int vex[MAX];
        bool arc[MAX][MAX];
        int vNum,eNum;
    }Garph;
    void CreateGarph(Garph &G){
        int k,w;
        memset(G.arc,0,sizeof(bool)*MAX*MAX);
        memset(visitd,0,sizeof(bool)*MAX);
        cin >> G.vNum >> G.eNum;
        for(int i=1;i<=G.vNum;i++)
            G.vex[i]=i;
        for(int i=1;i<=G.eNum;i++){
            cin >> k >> w;
            G.arc[k][w]=true;
            G.arc[w][k]=true;
        }
    }
    void DFS(Garph G,int begin){
        visitd[begin]=true;
        for(int i=1;i<=G.vNum;i++){
            if(G.arc[begin][i]==true && visitd[i]==false){
                DFS(G,i);
            }
        }
    }
    int main(){
        int n;
        cin >> n;
        while(n--){
            Garph G;
            CreateGarph(G);
            int SG=0;
            for(int i=1;i<=G.vNum;i++){
                if(!visitd[i]){
                    SG++;
                    DFS(G,i);
                }
            }
            cout << SG << endl;
        }
        return 0;
    }
    
    /***************************************************
    User name: zhxw150244李政
    Result: Accepted
    Take time: 0ms
    Take Memory: 212KB
    Submit time: 2016-11-16 20:30:52
    ****************************************************/
    

    相关文章

      网友评论

          本文标题:无标题文章

          本文链接:https://www.haomeiwen.com/subject/plpevxtx.html