zoukankan      html  css  js  c++  java
  • 1013. Battle Over Cities

    好久都没有做题了,从长沙回来之后一直就是看看QT,感觉自己真的要蠢死了><不开心不开心

    题目大概意思就是从一个图里面去掉一个点,看看剩下多少个孤立点。

    自己想了好大一会儿没有思路,看到网上一个代码,真是惊叹好神奇...><

    用遍历的方式,如DFS,将去掉的点设为1,然后遍历一次看看剩下多少个没有被遍历到的点。

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    #define MAX_VERTEX_NUM 1005
    
    int visit[MAX_VERTEX_NUM];
    
    typedef struct
    {
        int vexs[MAX_VERTEX_NUM];
        bool edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
        int vexnum,edgenum;
    }MGraph;
    
    MGraph g;
    
    
    void dfs(int from){
        int i;
        for(i=1;i<=g.vexnum;i++){
            if(i!=from&&visit[i]==0&&g.edges[from][i]==1){
                visit[i]=1;
                dfs(i);
            }
        }
    }
    
    
    int main()
    {
    
        int n,k,m,city,count;
        cin>>n>>m>>k;
        g.vexnum=n;
        g.edgenum=m;
        memset(g.edges,0,sizeof(g.edges));
        int c1,c2;
        for(int i=0;i<m;i++){
            cin>>c1>>c2;
            g.edges[c1][c2]=g.edges[c2][c1]=true;
        }
    
        for(int i=0;i<k;i++){
            count=0;
            memset(visit,0,sizeof(visit));
            cin>>city;
            visit[city]=1;
            for(int j=1;j<=n;j++){
                if(visit[j]==0){
                    count++;
                    dfs(j);
                }
            }
            count=count-1;
            cout<<count<<endl;
        }
    
    
        return 0;
    }
  • 相关阅读:
    POJ 2251 Dungeon Master(bfs)
    POJ 3275 Catch That Cow(bfs)
    POJ 3984 迷宫问题(bfs+路径记录)
    POJ 3620 Avoid The Lakes
    ZOJ 2100 Seeding
    POJ 2245 Lotto
    HDU 1181 变形课
    dedecms网站栏目增加缩略图的方法-测试通过
    dedecms缩略图模糊终极完美解决办法
    dedecms 留言板中引用模板文件方法
  • 原文地址:https://www.cnblogs.com/Qmelbourne/p/6111747.html
Copyright © 2011-2022 走看看