或广度优先搜索(BFS)算法遍历图,计算被感染的节点的数量。
```c // 定义访问标记数组,用于记录节点是否已被访问 int visited[MAX_NODES];
// 初始化访问标记数组 memset(visited, 0, sizeof(visited));
// 定义用于统计感染节点数量的变量 int count = 0;
// 定义辅助函数,使用DFS或BFS遍历图 void traverseGraph(int node) { // 标记当前节点为已访问 visited[node] = 1;
// 统计感染节点数量 count++; // 遍历当前节点的邻居节点 for (int i = 0; i < MAX_NODES; i++) { if (adjacencyMatrix[node][i] && !visited[i]) { traverseGraph(i); } }}
// 从起始节点开始遍历图 traverseGraph(startNode); ```
- 最终,count变量中的值即为流感患者的总人数。
完整代码示例:
#include <stdio.h> #include <string.h> #define MAX_NODES 100 int adjacencyMatrix[MAX_NODES][MAX_NODES]; int visited[MAX_NODES]; void traverseGraph(int node) { visited[node] = 1; for (int i = 0; i < MAX_NODES; i++) { if (adjacencyMatrix[node][i] && !visited[i]) { traverseGraph(i); } } } int main() { // 读取传播图,并将边的信息填入邻接矩阵中 // ... memset(visited, 0, sizeof(visited)); int count = 0; // 从起始节点开始遍历图 traverseGraph(startNode); printf("Total number of flu patients: %d\n", count); return 0; }这是一个基本的解决方案,你可以根据实际情况进行相应的修改和优化。
【相关推荐】
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7516410
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报-