hdu 3342 Legal or Not

原创 2015年07月11日 10:47:15

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3342
拓扑排序。。

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<map>
using std::cin;
using std::cout;
using std::endl;
using std::find;
using std::sort;
using std::map;
using std::pair;
using std::queue;
using std::vector;
using std::multimap;
#define pb(e) push_back(e)
#define sz(c) (int)(c).size()
#define mp(a, b) make_pair(a, b)
#define all(c) (c).begin(), (c).end()
#define iter(c) decltype((c).begin())
#define cls(arr,val) memset(arr,val,sizeof(arr))
#define cpresent(c, e) (find(all(c), (e)) != (c).end())
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
const int N = 10010;
typedef unsigned long long ull;
struct Node { int to, next; };
struct TopSort {
    Node G[N];
    int tot, topNum, inq[N], head[N];
    inline void init() {
        tot =  topNum = 0;
        cls(inq, 0), cls(head, -1);
    }
    inline void add_edge(int u, int v) {
        G[tot].to = v; G[tot].next = head[u]; head[u] = tot++;
    }
    inline void built(int m) {
        int u, v;
        rep(i, m) {
            scanf("%d %d", &u, &v);
            inq[v]++;
            add_edge(u, v);
        }
    }
    inline void bfs(int n) {
        queue<int> q;
        rep(i, n) { if (!inq[i]) q.push(i); }
        while (!q.empty()) {
            int u = q.front(); q.pop();
            topNum++;
            for (int i = head[u]; ~i; i = G[i].next) {
                if (--inq[G[i].to] == 0) q.push(G[i].to);
            }
        }
        puts(topNum == n ? "YES" : "NO");
    }
}work;
int main() {
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w+", stdout);
#endif
    int n, m;
    while (~scanf("%d %d", &n, &m), n + m) {
        work.init();
        work.built(m);
        work.bfs(n);
    }
    return 0;
}

HDU 3342 Legal or Not 判断拓补排序能否形成环

点击打开链接   Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot...
  • Dinivity123
  • Dinivity123
  • 2013年05月21日 16:59
  • 1317

freemarker写select组件报错总结(五)

1、错误描述 六月 26, 2014 10:44:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc...
  • you23hai45
  • you23hai45
  • 2014年06月26日 22:47
  • 2692

困难重重的新版本发布之路

这次版本提交可谓是困难重重,把我的经历分享出来,希望能够帮助一些人。...
  • coyote1994
  • coyote1994
  • 2016年09月16日 21:18
  • 2200

hdu3342-Legal or Not 通过拓扑判断是不是有向环

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • u013067957
  • u013067957
  • 2014年08月08日 19:44
  • 260

hdu 3342 Legal or Not

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • wfyhewfy
  • wfyhewfy
  • 2012年09月01日 22:04
  • 340

hdu3342 Legal or Not(拓扑排序)

http://acm.hdu.edu.cn/showproblem.php?pid=3342 题意:如果有A认为他是B的师傅,B认为A是他的师傅,那就说这里出现了矛盾,是不合法的。 思路:本题利...
  • Flynn_curry
  • Flynn_curry
  • 2016年10月17日 15:10
  • 190

hdu3342Legal or Not(拓扑排序)

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • qq_37025443
  • qq_37025443
  • 2017年07月22日 09:56
  • 134

hdu3342 Legal or Not 拓扑排序

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2012年07月27日 23:46
  • 484

HDU3342 - Legal or Not 拓补排序模板

HDU3342 - Legal or Not 拓补排序模板
  • P_rogrammer
  • P_rogrammer
  • 2015年08月26日 21:21
  • 245

HDU3342:Legal or Not(拓扑排序)

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T...
  • junior19
  • junior19
  • 2017年08月03日 22:20
  • 57
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 3342 Legal or Not
举报原因:
原因补充:

(最多只允许输入30个字)