#include<iostream> #include<cstring> #include<stack> using namespace std; int N,M,S; int vertex[1010],path[1010][1010],vis[1010]; stack<int> p; void dfs(int st) { vis[st] = 1; for(int i=1;i <= N;i++){ if(!vis[i] && path[st][i] != 0){ printf(" %d",i); p.push(i); dfs(i); } } } int main() { int number; scanf("%d%d%d",&N,&M,&S); for(int i=0;i < M;i++){ int u,v; scanf("%d%d",&u,&v); path[u][v] = path[v][u] = 1; } p.push(S); cout << S; dfs(S); p.pop(); //栈中的元素 等于N-1 number = p.size(); while(!p.empty()){ //按原路返回 printf(" %d",p.top()); p.pop(); } if(number < N-1) cout << " 0"; return 0; }将此代码转换为C语言代码
时间: 2024-03-08 20:51:11 浏览: 156
以下是将给定代码转换为C语言代码的结果:
```
#include<stdio.h>
#include<string.h>
#include<stack.h>
#define MAX_N 1010
int N,M,S;
int vertex[MAX_N],path[MAX_N][MAX_N],vis[MAX_N];
stack<int> p;
void dfs(int st) {
vis[st] = 1;
for(int i=1;i <= N;i++){
if(!vis[i] && path[st][i] != 0){
printf(" %d",i);
p.push(i);
dfs(i);
}
}
}
int main() {
int number;
scanf("%d%d%d",&N,&M,&S);
for(int i=0;i < M;i++){
int u,v;
scanf("%d%d",&u,&v);
path[u][v] = path[v][u] = 1;
}
p.push(S);
printf("%d",S);
dfs(S);
p.pop(); //栈中的元素 等于N-1
number = p.size();
while(!p.empty()){ //按原路返回
printf(" %d",p.top());
p.pop();
}
if(number < N-1)
printf(" 0");
return 0;
}
```
注意,这段C语言代码使用了C++的一些特性,如stack模板类,需要做相应的修改。
阅读全文