大失败!莫名其妙被卡之列出连通集
2021/10/1 23:40:50
本文主要是介绍大失败!莫名其妙被卡之列出连通集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
千辛万苦写出来一个结果说我有一个错了,晕,我自己测试却一点问题都没有,烦死了
#include <stdio.h> struct graph{ int n,e; int edge[10][10]; }tu; int visited[10]; int stack[10]; void create() {int i,a,b; int n; n=tu.n; for(i=0;i<tu.n;i++) { scanf("%d %d",&a,&b); tu.edge[a][b]=1; tu.edge[b][a]=1; } } void DFS(int a) {int i; visited[a]=1; printf("%d ",a); for(i=0;i<tu.n;i++) { if(visited[i]==0&&tu.edge[a][i]==1) { DFS(i); } } } void push(int x) {int i=0; while(stack[i]!=-1) { i++; } stack[i]=x; } int pop() {int i=9; int x; while(stack[i]==-1&&i>0) { i--; } x=stack[i]; stack[i]=-1; return x; } void BFS(int a) {int i,k; visited[a]=1; for(i=0;i<tu.n;i++) { if(visited[i]==0&&tu.edge[a][i]==1) {push(i); visited[i]=1; printf("%d ",i); } } while(k!=-1) { k=pop(); if(k!=-1) BFS(k);} } int main(void) { int n,e,i; //memset(tu->edge,0,100); scanf("%d %d",&n,&e); tu.n=n; tu.e=e; create(); for(i=0;i<10;i++) {visited[i]=0; stack[i]=-1;} for(i=0;i<n;i++) { if(visited[i]==0) {printf("{ "); DFS(i); printf("}\n");} } for(i=0;i<10;i++) {visited[i]=0; stack[i]=-1;} for(i=0;i<n;i++) { if(visited[i]==0) {printf("{ %d ",i); BFS(i); printf("}\n");} } //printf("%d",tu.edge[3][0]); return 0; }
这篇关于大失败!莫名其妙被卡之列出连通集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门