1013 Battle Over Cinties(25分)【連結成分+dfs】


1013 Battle Over Cinties (25分)
It is vitally mipopopopoportto have all the cities connected by highways in a war.If a cityisisiscritititite bythe enemy、all the highways fm/toward ththat cityararararare closed.Wemmusst know imdididieedieleeefefefefefefefefefefefefefefefefefefefeeeeeeeeemimimimimititititititititititititititititititititititititititititiaaaaaaaaaaaaaatttttttttttttch have all the remaning highways marked、you are supposed to tell the number of highways need to be repaired、quickly.
For example,if we have 3 cities and 2 highways connecting city 1-city 2 and city 1-city 3.The n if シティ1 is occupied by the enemiy,we must have 1 highway repaired,that is the highway city 2-city 3.
Input Specification:
Each input file contains one test case.Each case starts with a line containing 3 numbers N (<1000) M and K,which are the total number of cities,the number of remaning highways,and the number of cities to be checed,repectively.The n M ラインフォロワー、each describes a highway by 2 integers、which are the numbers of the cities the highway connects.The cities are numberd from 1 to N.Finally there is a line containing K numbers、which represent the cities we concern.
Output Specification:
For each of the K cities、output in a line the number of highways need to be repaired if that city is lost.
Sample Input:
3 2 3
1 2
1 3
1 2 3
Sample Output:
1
0
0
あなたにnつの都市をあげて、m条路、k回の処理をして、毎回この都市について敵に占有されて、残りの都市を回復して連絡を維持して、少なくとも何本の道を修理する必要がありますか?
問題の考え:実はその点が削除された後に残る点の連通の成分は1を減らして、連通の成分はdfsで完成して、具体的にコードに会います.
#include
using namespace std;
int road[1010][1010];
int n;
bool visit[1010];
void dfs(int node)
{
	visit[node]=true;
	for(int i=1;i<=n;i++)
	{
		if(visit[i]==false&&road[node][i]==1)
		dfs(i);		
	}	
} 
int main(void)
{
	int m,k;
	scanf("%d %d %d",&n,&m,&k);
	for(int i=0;i