CodeForces 325 E.The Red Button(欧拉回路)
2018-01-05 15:59
316 查看
Description
n个节点0~n−1,点i可以到2⋅i mod n或(2⋅i)+1 mod n,求一条从0开始的哈密顿回路
Input
一个整数n(2≤n≤105)
Output
如果有解则输出该哈密顿回路,否则输出−1
Sample Input
2
Sample Output
0 1 0
Solution
n为奇数时,到0点的点只有0和n−12,显然不能从0到0,故只有从n−12到0,到n−1的点也只有n−1和n−12,n−1也不能到n−1,故只有从n−12到n−1,但是n−12只能到一个点,故不能满足哈密顿回路每个点都被经过一次的要求,故无解
n为偶数时,由于第i个点可以到2i和2i+1,而i+n2也是到2i和2i+1,把2i和2i+1看作一个集合,原图中u到v的边变成现在u所在集合到v所在集合的边,那么新图中,每个点的入度和出度都是2,该图必然存在欧拉回路,且该图的欧拉回路对应回原图就是原图的哈密顿回路,实现的时候,注意到本来i到2i和2i+1是两条边,但是在新图中只是i所在集合到2i所在集合的一条边,故求新图欧拉回路本应标记这条集合之间的边,对应到原图直接标记i点即可
Code
n个节点0~n−1,点i可以到2⋅i mod n或(2⋅i)+1 mod n,求一条从0开始的哈密顿回路
Input
一个整数n(2≤n≤105)
Output
如果有解则输出该哈密顿回路,否则输出−1
Sample Input
2
Sample Output
0 1 0
Solution
n为奇数时,到0点的点只有0和n−12,显然不能从0到0,故只有从n−12到0,到n−1的点也只有n−1和n−12,n−1也不能到n−1,故只有从n−12到n−1,但是n−12只能到一个点,故不能满足哈密顿回路每个点都被经过一次的要求,故无解
n为偶数时,由于第i个点可以到2i和2i+1,而i+n2也是到2i和2i+1,把2i和2i+1看作一个集合,原图中u到v的边变成现在u所在集合到v所在集合的边,那么新图中,每个点的入度和出度都是2,该图必然存在欧拉回路,且该图的欧拉回路对应回原图就是原图的哈密顿回路,实现的时候,注意到本来i到2i和2i+1是两条边,但是在新图中只是i所在集合到2i所在集合的一条边,故求新图欧拉回路本应标记这条集合之间的边,对应到原图直接标记i点即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; typedef pair<int,int>P; const int INF=0x3f3f3f3f,maxn=100005; int n,vis[maxn],ans[maxn],res; void dfs(int u) { if(vis[u])return ; vis[u]=1; dfs(2*u%n); dfs((2*u+1)%n); ans[res++]=u; } int main() { scanf("%d",&n); if(n&1)printf("-1\n"); else { res=0; dfs(0); for(int i=res-1;i>=0;i--)printf("%d ",ans[i]); printf("0\n"); } return 0; }
相关文章推荐
- 【CF325E】The Red Button
- swift实现的Dont Tap the Red Button游戏iOS源码
- CF MemSQL Round1 E. The Red Button
- codeforces 438D. The Child and Sequence(线段树)
- Codeforces 29D Ant on the Tree 树的遍历 dfs序
- 【CodeForces - 839B】Game of the Rows(贪心+暴力)(有点坑)
- 【67.24%】【codeforces 745A】Hongcow Learns the Cyclic Shift
- 【47.40%】【codeforces 743B】Chloe and the sequence
- 【52.49%】【codeforces 556A】Case of the Zeros and Ones
- 25号搜索的一些例子,。。Oil Deposits&&Red and Black&&Knight Moves&&Catch That Cow&&Tempter of the Bone
- codeforces 842C. Ilya And The Tree(dfs)
- Codeforces 875B (Round 441 D1) Sorting the Coins
- [Xcode] The iPhone simulator do not have home button
- CodeForces 266C Below the Diagonal
- codeforces 708B-Recover the String
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- codeforces—— 869A —— The Artful Expedient
- Automation for the people: Pushbutton documentation
- CodeForces 369 div2 E. ZS and The Birthday Paradox 数论
- CodeForces 833 A.The Meaningless Game(水~)