由于叛徒朱子明的出卖,导致独立团在赵家峪的团部驻军在团长李云龙大婚之日几乎全军覆没。
突出重围之后,李云龙决定集合所有驻扎在外的部队,使用重型武器意大利炮攻打平安县城!
消息从团部穿出之后到达各部驻地后,驻地长官会派出自己的通讯人员通知其他部队。但是一旦该驻地被攻陷,那么该驻地就无法收到命令,同理与该驻地有道路连通的驻地也无法收到命令!
现在,李云龙想知道假设一个驻地被攻陷,所有的驻地会被分为几个连通块!
为了简化问题,不要求计算每个连通块的具体信息,只要求输出连通块的数量即可!
输入格式:
第一行包含两个正整数N(N<=1000)和M(<=2000),表示整个战区一共有N个驻地,这N个驻地由M条无向小道相连!(驻地由1到N编号)
接下来M行,每行包含两个驻地编号,表示这两个驻地之间有一条小道相连!
接下来一行包含一个正整数q,表示有q个询问!
接下来q行,每行包含一个驻地编号!
输出格式:
对于每个询问,请你输出在删掉它和所有与它相连的小道之后,这个战区的驻地形成的连通块数量!
值得注意的一点是,每个询问相互独立!
输入样例:
在这里给出一组输入。例如:
8 8
1 2
1 4
2 3
4 3
3 5
5 7
5 6
5 8
3
3
5
7
输出样例:
在这里给出相应的输出。例如:
2
4
1
一 .领接矩阵+广度优先搜索或深度优先搜索版
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxVertexNum 1000
typedef struct GNode* PtrToGNode;
struct GNode {
int Nv;
int Ne;
int G[MaxVertexNum][MaxVertexNum];
};
typedef PtrToGNode MGraph;
int Visited[MaxVertexNum];
MGraph CreateGraph(int VertexNum) {
int v, w;
MGraph Graph = (MGraph)malloc(sizeof(struct GNode));
Graph->N