拓扑排序还能这么写 zoj 2997
2015-07-16 13:56
260 查看
#include <cstdio> #include <cstring> using namespace std; #define LL long long #define CL(a, val) memset(a, val, sizeof(a)) int n, p, q; int b[5005]; int idx; bool dfs(int u) { b[u] = -1; int v = u - p; if(v >= 0) { if(b[v] < 0) return 0; else if(!b[v] && !dfs(v)) return 0; } v = u + q; if(v <= n) { if(b[v] < 0) return 0; else if(!b[v] && !dfs(v)) return 0; } b[u] = idx ++; return 1; } bool topo() { CL(b, 0); idx = 1; for(int i = 0; i <= n; ++ i) { if(!b[i]) { if(!dfs(i)) return false; } } return true; } int main() { #if _MSC_VER == 1500 freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif while(scanf("%d%d%d", &n, &p, &q) == 3) { if(!topo()) printf("NO\n"); else { printf("YES\n"); for(int i = 1; i <= n; ++ i) { if(i != 1) printf(" "); printf("%d", b[i] - b[i - 1]); } printf("\n"); } } return 0; }
相关文章推荐
- poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)
- Android学习之播放背景音乐
- 项目开发之插件的安装 分类: ios开发 2015-07-16 13:56 183人阅读 评论(0) 收藏
- 大一下學期學習生活總結
- GRE写作必备句型
- MR21 VS MR22 对CKMLCP结果影响
- Activity生命周期的回调,你应该知道得更多!--Android源码剖析(下)
- ArrayList和Vector的扩容机制
- selenium2入门 用Yaml文件进行元素管理 (五)
- spring ApplicationContextAware接口介绍
- Spark中的序列化机制
- 获取系统时间
- 代码配置没有问题,为什么不回滚事务(要理解Mysql数据库引擎)
- top对僵尸进程的处理
- 百度地图API:如何查询数自己的数据库标注地图并让标注显示在最佳视野内
- App Transport Security
- MFC 中如何查看一个对话框对应的类??
- Linux有问必答:如何在 Ubuntu 15.04 的 GNOME 终端中开启多个标签
- C语言之指针篇
- List、Set集合遍历方式