虫族据点WA90分 向各位大佬求助 求code

虫族据点WA90分 向各位大佬求助

题目描述

阿斯罗菲克帝国南疆毗邻幽暗森林,其中虫豸横行。

帝宫总管萨拉温格探查发现,虫族似乎已经在森林中建立了 n 个据点,在这些据点之间还有 m 条道路 (双向道路) 供虫族通行。萨拉温格还发现,若 k 个据点之间两两相连,且这 k 个据点与其它任何一个据点都没有道路相连,则这 k 个据点中必然居住了一名虫族大祭司。不论这个 k 是多少,哪怕 k=1,也一定有一名大祭司。

请问总共有几名大祭司。

输入格式

第一行两个整数 n 和 m,接下来 m 行每行两个整数表示一条已经存在的路径。

输出格式

输出一行一个整数,表示大祭司的数量。

样例输入

6 4
0 1
0 2
1 2
3 4

样例输出

3

0-1-2,3-4,5 各有一名大祭司。

样例输入

6 5
0 1
0 2
1 2
3 4
3 5

样例输出

1

0-1-2 有一名大祭司。

数据规模

1≤n≤100
我的代码

#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0,sum,vis[200005];
vector<int>v[200005];
void dfs(int x){
	vis[x]=1;
	for(int i=0;i<v[x].size();i++){
		int nx=v[x][i];
		if(sum==nx){
			ans++;	
		}
		if(vis[nx]==1){
			continue;
		}
		dfs(nx);
	}
}
int main(){
    cin>>n>>m;
    for(int i=1,x,y;i<=m;i++){
    	cin>>x>>y;
    	v[x].push_back(y);
    	v[y].push_back(x);
	} 
	for(int i=0;i<n;i++){
		if(vis[i]==0 && v[i].size()==0){
			ans++;
		}
		else if(vis[i]==0 && v[i].size()==1){
			sum=i;
			dfs(i);
		}
	}
	cout<<ans;
    return 0;
}
3 个赞

私信

1 个赞

大佬code呢

1 个赞

我不是发了吗?