数据结构实验病毒感染检测问题(C++)
时间: 2023-07-07 07:29:39 浏览: 116
感谢您的提问!
针对病毒感染检测问题,可以使用图论中的深度优先搜索(DFS)算法来解决。具体步骤如下:
1. 构建图:将每个人看作一个节点,如果两个人之间有过接触,则在两个节点之间连一条边。
2. DFS搜索:从每个未被搜索过的节点开始,进行DFS搜索,将搜索到的节点标记为已被访问。如果搜索到一个被感染的节点,则将其标记为已感染。
3. 输出结果:最终输出所有被感染的节点。
下面是一个基本的实现代码:
```c++
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
const int MAXN = 1000;
vector<int> G[MAXN]; // 图的邻接表表示
bool visited[MAXN]; // 记录每个节点是否被访问过
bool infected[MAXN]; // 记录每个节点是否被感染
void dfs(int u) {
visited[u] = true;
if (infected[u]) return; // 已感染,直接返回
infected[u] = true;
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (!visited[v]) dfs(v);
}
}
int main() {
int n, m; // n个人,m次接触
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
for (int i = 1; i <= n; i++) {
if (!visited[i]) dfs(i);
}
for (int i = 1; i <= n; i++) {
if (infected[i]) cout << i << endl;
}
return 0;
}
```
希望能够帮到您!
阅读全文