洛谷 P1341 无序字母对(欧拉回路)
解题思路:
我好菜啊!!
首先可以n2搞定,而对于每个点,又可以在当前不优的状态下将不好的状态拼到后面。
最后回溯搞定。
代码:
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- int n;
- bool r[][];
- int ind[];
- int ans[];
- char cmd[];
- int cnt;
- int tot;
- void dfs(int x)
- {
- for(int i='A';i<='z';i++)
- if(r[x][i])
- {
- r[x][i]=r[i][x]=false;
- dfs(i);
- }
- ans[++tot]=x;
- }
- int main()
- {
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- scanf("%s",cmd+);
- r[cmd[]][cmd[]]=r[cmd[]][cmd[]]=true;
- ind[cmd[]]++;
- ind[cmd[]]++;
- }
- for(int i='A';i<='z';i++)
- if(ind[i]&)
- cnt++;
- if(cnt!=&&cnt!=)
- {
- puts("No Solution");
- return ;
- }
- int sta;
- for(int i='z';i>='A';i--)
- if(ind[i])
- {
- if(cnt)
- {
- if(ind[i]&)
- sta=i;
- }else
- sta=i;
- }
- dfs(sta);
- if(tot!=n+)
- {
- puts("No Solution");
- return ;
- }
- for(int i=tot;i;i--)
- printf("%c",ans[i]);
- puts("");
- return ;
- }
洛谷 P1341 无序字母对(欧拉回路)的更多相关文章
- 洛谷 P1341 无序字母对(欧拉回路)
题目传送门 解题思路: 一道欧拉回路的模板题,详细定理见大佬博客,任意门 AC代码: #include<cstdio> #include<iostream> using nam ...
- 洛谷P1341 无序字母对(欧拉回路)
P1341 无序字母对 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 ...
- 洛谷 P1341 无序字母对 解题报告
P1341 无序字母对 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 ...
- 洛谷 P1341 无序字母对(欧拉路)
P1341 无序字母对 题目提供者yeszy 标签 福建省历届夏令营 难度 提高+/省选- 最新讨论 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造 ...
- 洛谷 P1341 无序字母对 Label:欧拉路 一笔画
题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...
- 洛谷P1341 无序字母对[无向图欧拉路]
题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...
- 洛谷P1341 无序字母对【欧拉路】【dfs】
题目:https://www.luogu.org/problemnew/show/P1341 题意:给定n对字母对,要求构造一个个数为n+1的字符串,使得每一个字母对都在里面出现过. 思路:这种题目都 ...
- 洛谷 [P1341]无序字母对
这道题第一眼以为是一道字符串的题,但细想一下是一道求欧拉路的图论题. 把每一对对应关系看成一条边,本题即求这张图上是否存在一个欧拉回路或欧拉路,并要求字典序最小的方案,那么我们在dfs的时候就要从该点 ...
- [洛谷P1341]无序字母对
题目大意:给一张无向图,找一条字典序最小的欧拉路径 题解:若图不连通或有两个以上的奇数点,则没有欧拉路径,可以$dfs$,在回溯时把这个节点加入答案 卡点:没有在回溯时加入答案,导致出现了欧拉路径没走 ...
随机推荐
- HDU 5389 Zero Escape(DP + 滚动数组)
Zero Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
- Connect the Campus (Uva 10397 Prim || Kruskal + 并查集)
题意:给出n个点的坐标,要把n个点连通,使得总距离最小,可是有m对点已经连接,输入m,和m组a和b,表示a和b两点已经连接. 思路:两种做法.(1)用prim算法时,输入a,b.令mp[a][b]=0 ...
- Create the Data Access Layer
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/getting-started/getting-started-with-aspn ...
- thinkphp里面的or查询
thinkphp里面的or查询 whereOr 方法 使用whereOr 方法进行OR 查询: Db::table('think_user') ->where('name','like','%t ...
- BZOJ 1579 道路升级 Dijkstra
思路: 这道题 不能把所有边都建出来 会MLE的!!! oh gosh 其实不建所有的边 用的时候再调就行了-.(也没啥区别) //By SiriusRen #include <queue> ...
- 库:IO读写操作
在Java文件读取路径要注意的地方: 计算机:"D:\" 程序:"D://" 内存与硬盘之间进行文件的相互传输过程 以应用程序为参考点,应用程序从硬盘中读取数据 ...
- Smart Pointer Guidelines
For Developers > Smart Pointer Guidelines What are smart pointers? Smart pointers are a specif ...
- 51nod 最大子矩阵和
一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 我们可以降维,枚举矩形的长,然后算出一个一维数组,然后就转化成了最大字段和问题 #include< ...
- 数据库更新DATE类型的时间
使用to_date() 进行格式转换 to_date('2018/11/16','yyyy/MM/dd') update tableName t set t.shipment_date = to_da ...
- 【Henu ACM Round#15 A】 A and B and Chess
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 统计大写和小写的个数. 比较答案.输出即可. [代码] #include <bits/stdc++.h> using n ...