博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uvaoj10054 - The Necklace
阅读量:6847 次
发布时间:2019-06-26

本文共 1744 字,大约阅读时间需要 5 分钟。

1 /* 2     题意:打印欧拉回路! 3     思路:开始时不明白,dfs为什么是后序遍历?  4     因为欧拉回路本身是一条回路,那么我们在dfs时,可能存在提前找到回路,这条回路可能不是欧拉回路, 5     因为没有遍历完成所有的边!如果写成前序遍历的话,存储起来的路径就不是一条完整的路径了!它有可能 6     是多条回路组成的!答案就是错误 的!如果是后序遍历的话,当dfs是遇到了回路,那么就退出当前栈的搜索! 7     去寻找其他的路径!最终得到的只有一条回路路径!-->欧拉回路~!  8 */  9 #include
10 #include
11 #define M 5512 #define Max 0x3f3f3f3f13 using namespace std;14 15 int cnt[M][M];16 int deg[M];17 int map[M][M];18 int x;19 20 struct Point{21 int x, y;22 Point(){}23 24 Point(int x, int y){25 this->x=x;26 this->y=y; 27 }28 }; 29 30 Point p[1005];31 int top;32 33 void dfs(int u){34 if(!deg[u]) return;35 for(int i=1; i<=50; ++i)36 if(map[u][i] && cnt[u][i]){37 --cnt[u][i];38 --cnt[i][u];39 --deg[u];40 --deg[i];41 dfs(i);42 p[++top]=Point(u, i); 43 } 44 }45 46 int main(){47 int t, n, k=0;48 cin>>t;49 while(t--){50 cin>>n;51 x=Max;52 memset(cnt, 0, sizeof(cnt));53 memset(map, 0, sizeof(map));54 memset(deg, 0, sizeof(deg));55 for(int i=1; i<=n; ++i){56 int u, v;57 cin>>u>>v;58 deg[u]++;59 deg[v]++;60 map[u][v]=1;61 map[v][u]=1;62 cnt[u][v]++;63 cnt[v][u]++;64 if(x>u) x=u;65 if(x>v) x=v;66 }67 int ok=0;68 for(int i=1; i<=50; ++i)69 if(deg[i]%2!=0){70 ok=1;71 break;72 }73 cout<<"Case #"<<++k<
=1; --top)83 cout<
<<" "<
<
本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3895454.html,如需转载请自行联系原作者
你可能感兴趣的文章
美国创建了史上最强的量子计算器,超强量子算法秒杀一切当今科技
查看>>
instagram上值得关注的账号推荐
查看>>
JavaScript parser
查看>>
如何用智能有效感知城市?城市大脑三大AI产品来了
查看>>
新华三:珠海航展背后不为人知的“大杀器”
查看>>
英特尔新技术,让人工智能通过现实照片模拟虚构场景
查看>>
IBM新思路,让无人机照看、训练你的宝贝萌宠
查看>>
table表格单元格横向和属性合并代码实例
查看>>
网站开发人员应该知道的61件事
查看>>
HtmlEncode和JavaScriptEncode(预防XSS)
查看>>
VS中常见的扩展名,看看你知道几个?
查看>>
uboot移植——内核的启动过程
查看>>
研究音频编解码要看什么书
查看>>
python+uwsgi导致redis无法长链接引起性能下降问题记录
查看>>
IBatis增删改查
查看>>
Linux Shell常用技巧(一)
查看>>
关于loose.dtd和xhtml1-transitional.dtd等文档类型定义模型中CSS失效的解决办法。
查看>>
PHP 自制日历
查看>>
写得蛮好的linux学习笔记三-压缩命令(收藏)
查看>>
[C++再学习系列] 隐式类型转换与转换操作符
查看>>