SDNU__1088.欧拉路
来源:互联网 发布:慕课网php百度网盘 编辑:程序博客网 时间:2024/06/07 11:26
1088.欧拉路
Time Limit: 1000 MS Memory Limit: 32768 KB
Total Submission(s): 114 Accepted Submission(s): 32
Total Submission(s): 114 Accepted Submission(s): 32
Description
给定一个有向图,判断图是否是欧拉路。
Input
第一行为两个正整数n(1<=n<=1000),m(1<=m<=100000),表示图中的点数和边数。
之后m行每行两个整数a,b(0 < a, b <= n)表示a到b存在一条有向边。
之后m行每行两个整数a,b(0 < a, b <= n)表示a到b存在一条有向边。
Output
一行,若是欧拉路,输出YES,否则输出NO
Sample Input
5 51 22 32 44 55 2
Sample Output
YES
一直记得刚进队考的那个七桥问题,如今终于可以用代码实现了
欧拉路问题,我现在掌握的还比较浅显,在简单的构图统计入度和出度后
进行如下判断——每一个点的入度 = 出度 YES
——有且仅存在两个点____一个入度比出度大一(起点)____一个入度比出度小一(终点)——YES
其余情况NO
比较容易忽略的是入度和出度同时为0的情况
#include<iostream> #include<cstdio> #include<memory.h> using namespace std; int in[1005]; int out[1005]; int main(){ int n ,m; int a,b; int flag = 0; int innum = 0,outnum = 0; scanf("%d %d",&n,&m); memset(in,0,sizeof(in)); memset(out,0,sizeof(out)); for(int i = 0;i < m;i++) { cin>>a>>b; out[a]++; in[b]++; } for(int i = 1;i <= n;i++) { if(in[i] == 0 && out[i] == 0) { flag = 1; } if(in[i] == out[i]) { continue; } if(in[i] - out[i] == 1) { innum ++; } if(out[i] - in[i] == 1){ outnum ++;} } if(innum + outnum > 2) { flag = 1; } if(flag) { cout<<"NO"<<endl;}else{cout<<"YES"<<endl;} return 0;}
阅读全文
0 0
- SDNU__1088.欧拉路
- 欧拉路
- 欧拉路
- 欧拉路
- usaco 欧拉路
- 欧拉路问题
- poj3018(欧拉路)
- 寻找欧拉路
- 【图论】欧拉路
- 欧拉路的应用--文字游戏
- 【TOJ】1416. Catenyms --欧拉路
- 欧拉回路,欧拉路
- 欧拉路和欧拉图
- 欧拉图与欧拉路
- 图论 欧拉路代码模版
- poj 1637 混合欧拉路
- POJ 1386(欧拉路)
- SGU101 - Domino(欧拉路)
- Eclipse Class Decompiler
- firewalld关于service的操作
- 171201 How to install Chrome and SurfEasy on Linux
- Linux运维常用命令汇总
- Hibernate中二级缓存指的是什么?
- SDNU__1088.欧拉路
- Redis 主从复制
- Bean在Spring容器中的生命周期
- SessionFactory有什么作用? SessionFactory线程安全吗
- 产品经理-团队沟通篇
- Lintcode168 Burst Balloons solution 题解
- Python捕捉MySQL的警告导致的事物锁等待超时问题
- java学习笔记-jdbc篇
- 母牛的故事