这题py做只有20,但是一样的代码转c就是100
n,m=map(int,input().split())
lis=[[] for _ in range(n+3)]
for i in range(m):
a,b=map(int,input().split())
lis[a].append(b)
for i in range(1,n+1):
lis[i].sort()
def bfs(x,lis_bfs):
lis_bfs[x]=False
print(x,end=' ')
for i in range(len(lis[x])):
point=lis[x][i]
if lis_bfs[point]:
bfs(lis[x][i],lis_bfs)
bfs(1,lis_bfs=[True]*(n+1))
print()
def dfs(x):
lis_dfs=[True]*(n+1)
deque=[]
lis_dfs[x]=False
deque.append(x)
while deque:
x=deque.pop(0)
print(x,end=' ')
for i in range(len(lis[x])):
if lis_dfs[lis[x][i]]:
lis_dfs[lis[x][i]]=False
deque.append(lis[x][i])
dfs(1)
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
// 广度优先搜索函数
void bfs(int x, vector<bool> &lis_bfs, const vector<vector<int>> &lis) {
lis_bfs[x] = false;
cout << x << " ";
for (int i = 0; i < lis[x].size(); ++i) {
int point = lis[x][i];
if (lis_bfs[point]) {
bfs(point, lis_bfs, lis);
}
}
}
// 深度优先搜索函数
void dfs(int x, vector<vector<int>> &lis) {
vector<bool> lis_dfs(lis.size(), true);
queue<int> deque;
lis_dfs[x] = false;
deque.push(x);
while (!deque.empty()) {
x = deque.front();
deque.pop();
cout << x << " ";
for (int i = 0; i < lis[x].size(); ++i) {
if (lis_dfs[lis[x][i]]) {
lis_dfs[lis[x][i]] = false;
deque.push(lis[x][i]);
}
}
}
}
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> lis(n + 3);
for (int i = 0; i < m; ++i) {
int a, b;
cin >> a >> b;
lis[a].push_back(b);
}
for (int i = 1; i < n + 1; ++i) {
sort(lis[i].begin(), lis[i].end());
}
vector<bool> lis_bfs(n + 1, true);
bfs(1, lis_bfs, lis);
cout << endl;
dfs(1, lis);
cout << endl;
return 0;
}
有没有大佬完善一下我py,让他能过,转语言是靠大模型弄的,真的很绝望(哪怕是一些猜想,主意也好)