1013 Battle Over Cities

Posted kkmjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1013 Battle Over Cities相关的知识,希望对你有一定的参考价值。

题意:

思路:计算连通块。

代码:

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int maxn=1005;
bool vis[maxn];
vector<int> graph[maxn];
int n,m,k;

void dfs(int v)
{
    vis[v]=true;
    for(auto u:graph[v])
        if(!vis[u]) dfs(u);
}

int func(int v)
{
    //cut
    memset(vis,false,sizeof(vis));
    vis[v]=true;
    //calculate the number of connected block
    int cnt=0;
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            dfs(i);
            cnt++;
        }
    }
    return cnt-1;
}

int main()
{
    scanf("%d%d%d",&n,&m,&k);
    int u,v;
    for(int i=0;i<m;i++){
        scanf("%d%d",&u,&v);
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    int query;
    while(k--){
        scanf("%d",&query);
        printf("%d
",func(query));
    }
    return 0;
}

 

以上是关于1013 Battle Over Cities的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1013Battle Over Cities

1013. Battle Over Cities

1013. Battle Over Cities (25)

PAT 1013 Battle Over Cities

PAT 1013. Battle Over Cities

pat 1013 Battle Over Cities(25 分) (并查集)