HDU 4857 逃生(拓扑排序)
来源:互联网 发布:java程序员如何赚外快 编辑:程序博客网 时间:2024/05/16 04:45
HDU 4857 逃生
题目链接
题意:中文题
思路:逆拓扑排序,利用优先队列,每次先取度数0,标号最大的,进行拓扑排序,最后再反向输出
代码:
#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int N = 30005;int t, n, m, ans[N], vis[N], an;vector<int> g[N];int i;void solve() {priority_queue<int> Q;for (int i = 1; i <= n; i++)if (!vis[i]) Q.push(i);while (!Q.empty()) {int now = Q.top();Q.pop();for (int i = 0; i < g[now].size(); i++) {vis[g[now][i]]--;if (vis[g[now][i]] == 0) Q.push(g[now][i]);}ans[an++] = now;}}int main() { scanf("%d", &t); while (t--) { an = 0; memset(vis, 0, sizeof(vis)); scanf("%d%d", &n, &m); for (i = 1; i <= n; i++) g[i].clear(); int u, v; while (m--) { scanf("%d%d", &u, &v);g[v].push_back(u);vis[u]++; }solve();for (int i = an - 1; i > 0; i--) printf("%d ", ans[i]);printf("%d\n", ans[0]); } return 0;}
0 0
- HDU 4857 逃生(拓扑排序)
- hdu-4857-逃生-拓扑排序
- HDU 4857 逃生(拓扑排序)
- hdu-4857 逃生 拓扑排序
- HDU-4857-逃生【拓扑排序】
- hdu 4857 逃生 (拓扑排序)
- HDU 4857--逃生【拓扑排序 && 反向拓扑】
- 【HDU】4857 逃生 逆拓扑排序
- HDU 4857 逃生 拓扑排序+优先队列
- HDU-#4857 逃生(拓扑排序)
- hdu 4857 逃生(拓扑排序)
- hdu 4857 逃生【反向拓扑排序】
- hdu 4857 逃生(拓扑排序)
- 反向拓扑排序 HDU 4857 逃生
- HDU 4857 逃生(拓扑排序)
- HDU 4857 逃生 (拓扑排序)
- hdu 4857 逃生(拓扑排序)
- hdu 4857 逃生 反向拓扑排序
- Andorid手机振动器(Vibrator)的使用
- Android内存优化详解
- iOS 打电话后返回应用
- Eclipse中直接将web项目发布到Tomcat的webapps
- CDialog::DoModal()的返回值 和 自定义返回值
- HDU 4857 逃生(拓扑排序)
- 前端开发框架对比
- 初学ibatis连接mysql很容易犯的错误,并且很不好查找
- Android Listview嵌套Listview实现评论
- libGDX Scene2d
- 让你提前认识软件开发(38):完成第一个新需求
- Android 文件下载,断点续传,进度更新
- STL_map——map::equal_range
- Intellij IDEA +genymotion安装配置