POJ 1386 有向图欧拉通路
题意:给你一些字符串,这些字符串可以首位相接(末位置如果和另一个字符串的首位置相同的话就可以相连) 。然后问你是否可以全部连起来。
思路:就是取出每个字符串的首尾位置,然后求出出度和入度,根据有向欧拉通路的性质,可以求出是否可以组成欧拉通路 。
当然还得考虑一下这个图是否是连通图,这里可以用并查集记录边的集合。最后判断是否是一个连通图。
欧拉通路水题。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define clr(a) memset(a , 0 , sizeof(a) ) using namespace std ; char a[1111] ; struct kdq{ int s, e ; }al[111111] ; int in[30] ,out[30] ; bool vis[30] ; int fa[30] ; int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]) ; } void Union(int a, int b){ a = find(a) ; b = find(b) ; if(a == b)return ; if(a < b)fa[b] = a ; else fa[a] = b ; } void init(){ for (int i = 0 ; i <= 26; i ++ )fa[i] = i ; clr(in) ; clr(out) ; clr(vis) ; } int main(){ int T ; cin >> T ; while( T -- ){ int n ; cin >> n ; init() ; for (int i = 1 ; i <= n ; i ++ ){ scanf("%s",a) ; int l = strlen(a) ; al[i].s = a[0] - 'a'; al[i].e = a[l - 1] - 'a'; in[a[0] - 'a'] ++ ; out[a[l - 1] - 'a'] ++ ; vis[a[0] - 'a'] = 1 ; vis[a[l - 1] - 'a'] = 1 ; } for (int i = 1 ; i <= n ; i ++ ){ int u = al[i].s ; int v = al[i].e ; Union(u , v) ; } int jihe = -1 ; bool flag = 0 ; for (int i = 0 ; i < 26 ; i ++ ){ if(!vis[i])continue ; if(jihe == -1){ jihe = find(i) ; } else if(find(i) != jihe){ flag = 1 ; break ; } } int num = 0 ; for (int i = 0 ; i < 26 ;i ++ ){ if(!vis[i])continue ; if(abs(in[i] - out[i]) >= 2){ flag = 1 ; break ; } else if(abs(in[i] - out[i]) == 1){ num ++ ; } } if(flag){ puts("The door cannot be opened.") ; }else if(num == 0 || num == 2 ){ puts("Ordering is possible.") ; }else { puts("The door cannot be opened.") ; } } return 0 ; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)