版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zero_1778393206/article/details/81124623
DFS: cin cout在最后一个测试点会超时。
#include<iostream>
#include<string.h>
#include<cstdio>
#define N 1000+10
using namespace std;
int visit[N];
int map[N][N];
void DFS(int s, int c, int n)
{
visit[s] = 1;
for (int i = 1; i <= n; i++)
{
if (map[s][i] == 1 && visit[i] == 0 && i != c)
DFS(i, c, n);
}
}
int Find(int c, int n)
{
int v = -1;
visit[c] = 1;
for (int i = 1; i <= n; i++)
{
if (visit[i] == 0)
{
v++;
DFS(i,c,n);
}
}
if (v == -1)
v = 0;
return v;
}
int main()
{
int n, m, k;
memset(map, 0, sizeof(map));
//cin >> n >> m >> k;
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= m; i++)
{
int a, b;
//cin >> a >> b;
scanf("%d%d", &a, &b);
map[a][b] = map[b][a] = 1;
}
for (int i = 1; i <= k; i++)
{
int c;
//cin >> c;
scanf("%d", &c);
memset(visit, 0, sizeof(visit));
int end = Find(c, n);
//cout << end << endl;
printf("%d\n", end);
}
system("pause");
return 0;
}