原题链接:蓝桥杯历届试题-网络寻路
解题思路:
链表大法好(注意,本题解并非原创)
原题解链接:https://blog.csdn.net/u010126535/article/details/19998143
利用链表的自动扩张性质,每一次输入相连接的路径时候两端都进行输入设置。
参考代码:
#include<bits/stdc++.h> using namespace std; const int maxn=100005; int n,m,ans=0; struct node{ int data; struct node *next; }tab[maxn]; int vis[maxn]; void add(int a,int b){ struct node *q =&tab[a]; while(q->next!=NULL){ q=q->next; } struct node *s; s=(struct node*)malloc(sizeof(struct node)); q->next=s; s->data=b; s->next=NULL; } void dfs(int x,int n,int s){ vis[x]=1; struct node *q=&tab[x]; if(n>=3){ ans++; return ; } while((q=q->next)!=NULL){ int w=q->data; if(vis[w]!=1||(w==s&&n==2)){ dfs(w,n+1,s); if(w!=s){ vis[w]=0; } } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ tab[i].data=i; tab[i].next=NULL; } while(m--){ int x,y; cin>>x>>y; add(x,y); add(y,x); } for(int i=1;i<=n;i++){ memset(vis,0,sizeof(vis)); dfs(i,0,i); } cout<<ans<<endl; return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复