NOJ 42题 一笔画(欧拉回路)

举报
Linux猿 发表于 2021/08/05 23:44:55 2021/08/05
【摘要】 题目链接~~>          欧拉道路:从图中的一个结点出发走出一条道路,每条边恰好经过一次(不一定回到出发点)。条件:连通且含有两个奇点。          欧拉回路:从图中的一个结点出发走出...

题目链接~~>

         欧拉道路:从图中的一个结点出发走出一条道路,每条边恰好经过一次(不一定回到出发点)。条件:连通且含有两个奇点。

         欧拉回路:从图中的一个结点出发走出一条道路,每条边恰好经过一次,且最终又回到出发点。条件:连通且含有零个奇点。

打印道路代码:

   


  
  1. #include<stdio.h>
  2. int map[102][102];
  3. int n;
  4. void euler(int u)
  5. {
  6. for(int v=1;v<=n;v++)
  7. if(map[u][v])
  8. {
  9. map[u][v]=map[v][u]=0;//无向图
  10. //map[u][v]=0; 有向图
  11. printf("~%d %d",u,v);
  12. euler(v);
  13. }
  14. }
  15. int main()
  16. {
  17. int T,m,i,x,y;
  18. scanf("%d",&T);
  19. while(T--)
  20. {
  21. scanf("%d%d",&n,&m);
  22. memset(map,0,sizeof(map));
  23. for(i=0;i<m;i++)
  24. {
  25. scanf("%d%d",&x,&y);
  26. map[x][y]=map[y][x]=1;//无向图
  27. //map[x][y]=1; 有向图
  28. }
  29. euler(1);//如果欧拉回路可以传任意一个点,否则传奇数点
  30. }
  31. }


 代码(NOJ 一笔画):


  
  1. #include<stdio.h>
  2. #include<string.h>
  3. int n;
  4. int vis[1002],father[1002];
  5. int find(int x)//寻找父亲
  6. {
  7. if(father[x]!=x)
  8. x=find(father[x]);
  9. return x ;
  10. }
  11. int main()
  12. {
  13. int T,i,m,x,y,fx,fy;
  14. scanf("%d",&T);
  15. while(T--)
  16. {
  17. scanf("%d%d",&n,&m);
  18. int q=0;
  19. memset(vis,0,sizeof(vis));
  20. for(i=1;i<=n;i++)
  21. father[i]=i;
  22. for(i=0;i<m;i++)
  23. {
  24. scanf("%d%d",&x,&y);
  25. vis[x]++;vis[y]++;//判断是奇点还是偶点
  26. fx=find(x);fy=find(y);
  27. if(fx!=fy)//判断图是否连通
  28. {
  29. father[fx]=fy;
  30. q++;
  31. }
  32. }
  33. if(q<n-1)
  34. {
  35. printf("No\n");
  36. continue;
  37. }
  38. int fg=0;
  39. for(i=1;i<=n;i++)
  40. if(vis[i]%2)
  41. fg++;
  42. if(fg>2)
  43. printf("No\n");
  44. else printf("Yes\n");
  45. }
  46. return 0;
  47. }

 

  

   

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/9629203

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。