1013. Battle Over Cities

本文分享了一次使用邻接矩阵实现深度优先搜索(DFS)的实际编程经历。通过对图进行遍历,解决了特定问题,并记录了从初始思路到最终实现过程中的心得与挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T_T心情超级不好啊啊啊啊。


这道题想法挺简单的,DFS也做过好多遍了,想到了并查集但没弄清楚怎么做,留个问号在这里吧。

选择的是邻接矩阵T口T,所幸有关图的数据量不大。

#include <stdio.h>
/*t偷个懒用邻接矩阵*/

int Graph[1000][1000];
int visited[1000];
int N;

void Initvisted();
void DFS(int v);
int main()
{
	int M, K,i,j,v,u,cnt;
	scanf("%d %d %d", &N, &M, &K);
	for (i = 0; i < N; i++)
		for (j = 0; j < N; j++)
			Graph[i][j] = 0;/*初始化图*/

	for (i = 0; i < M; i++) {/*插入边*/
		scanf("%d %d", &u, &v);
		Graph[u-1][v-1] = 1;
		Graph[v-1][u-1] = 1;
	}

	for (i = 0; i < K; i++) {
		scanf("%d", &v);
		Initvisted();
		visited[v - 1] = 1;
		cnt = 0;
		for (j = 0; j < N; j++)
			if (!visited[j]) {
					cnt++;
					DFS(j);
			}
		printf("%d\n",cnt-1);
	}
	return 0;
}

void Initvisted()
{
	for (int i = 0; i < N; i++)
		visited[i] = 0;
}

void DFS(int v)
{
	visited[v] = 1;
	int u;
	for (u = 0; u < N; u++)
		if (Graph[v][u] && !visited[u]) 
			DFS(u);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值