UVa 10596 Morning Walk ( 欧拉回路 )
来源:互联网 发布:高速网络不稳定 编辑:程序博客网 时间:2024/04/30 19:20
有一段时间不写并查集了,结果写的时候手生,写错了!
老大给了这道题, 我开始以为老大给的应该是搜索的题目,分析了一下,搜索是可以做的,但是搜的过程比较麻烦,后来看到了 a single walk,看来就是一笔换的问题的,需要回到home,连回家的过程都不能走原来的路,所以是回路!我看了好几遍题目,才读得彻底,它其实是个无向图的欧拉回路!
说一点体外话,与题目关系不大,我觉得ACM最重要的,除了学习各种算法以外,还有就是分析问题,找到问题的最本质,然后解决问题!
所以说,分析问题的能力是非常重要的……
接下来,代码如下:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int N = 200;bool isfind;int n, m, ans, f[N], a[N];int tofind( int x ) { return f[x] == x ? x : f[x] = tofind( f[x] );}int main(){ while ( scanf("%d%d", &n, &m) != EOF ) { memset( a, 0, sizeof(a) ); isfind = true; ans = 0; for ( int i = 0; i < n; ++i ) f[i] = i; for ( int i = 0, s, t; i < m; ++i ) { scanf("%d%d", &s, &t); a[s]++, a[t]++; int a = tofind( s ); int b = tofind( t ); if ( a != b ) f[a] = b; } for ( int i = 0, num = 0; i < n && isfind; ++i ) { if ( tofind(i) == i ) num++; if ( num > 1 ) isfind = false; } for ( int i = 0; i < n && isfind; ++i ) { if ( a[i] % 2 ) { isfind = false; break; } } if ( isfind ) printf("Possible\n"); else printf("Not Possible\n"); }}
- UVa 10596 - Morning Walk(欧拉回路)
- UVa 10596 Morning Walk ( 欧拉回路 )
- Morning Walk - UVa 10596 欧拉回路
- uva 10596 Morning Walk(欧拉回路)
- UVa 10596 - Morning Walk, 赤裸裸的欧拉回路
- UVA 10596 Morning Walk 简单的k欧拉回路
- uva 10596 Morning Walk(欧拉回路)
- uva 10596 - Morning Walk (欧拉回路~~~)
- UVA - 10596 Morning Walk (欧拉回路+dfs)
- uva 10596 Morning Walk (欧拉回路)
- 10596 - Morning Walk//欧拉回路
- 10596 - Morning Walk(欧拉回路 + dfs)
- UVA - 10596 - Morning Walk (欧拉回路!并查集判断回路)
- Morning Walk-uva 经典的欧拉回路
- UVA 10196 Morning Walk(欧拉回路)
- UVa 10596 - Morning Walk 有向图的欧拉回路
- UVa 10596 - Morning Walk(无向图,欧拉回路)
- UVA 10596 Morning Walk[无向图的欧拉回路]
- 分析TCP/IP协议栈代码之IP & ICMP(STM32平台)
- C程序设计课程-第七堂课后预习
- 了解BIG-IP本地流量管理
- C语言指针声明探秘
- Android AIDL应用间交互
- UVa 10596 Morning Walk ( 欧拉回路 )
- hadoop 绑定到IPV4上
- Android---Matrix类的使用
- 进程通信系列-主程序
- 行为型模式之访问者模式(Visitor)
- IPSec中VPN的讲解
- jdbc连接池
- 原码、反码、补码和移码其实很简单
- 最全面Maven安装以及与Eclipse集成