题目链接:

http://hihocoder.com/problemset/problem/1175

题目难度:一星级(简单题)

今天闲来无事,决定刷一道水题。结果发现这道水题居然把我卡了将近一个钟头。

最后终于调通了。总结起来,原因只有一个:不够仔细

思路不用细说了,就是拓扑排序的简单应用。然而,一些不起眼的细节才是让你掉坑里的真正原因。

猜猜哪儿可能出bug?

// A simple problem, but you can't be too careful with it.
#include <cstdio>
#include <cstring>
#include <map>
#include <queue>
#include <unordered_set>
#include <vector>
using namespace std; const int MOD = ;
const int N = ;
vector<unordered_set<int> > e;
queue<int> q;
int n, m, k;
int ind[N];
int res[N]; int main()
{
int i;
int x, y; scanf("%d%d%d", &n, &m, &k);
memset(res, , sizeof(res));
for (i = ; i < k; ++i) {
scanf("%d", &x);
--x;
res[x] = (res[x] + ) % MOD;
} e.resize(n);
memset(ind, , sizeof(ind));
for (i = ; i < m; ++i) {
scanf("%d%d", &x, &y);
--x;
--y;
e[x].insert(y);
++ind[y];
} for (i = ; i < n; ++i) {
if (ind[i] == ) {
q.push(i);
}
}
while (!q.empty()) {
i = q.front();
q.pop();
if (ind[i] > ) {
continue;
} auto eit = e[i].begin();
while(eit != e[i].end()) {
--ind[*eit];
res[*eit] = (res[*eit] + res[i]) % MOD;
q.push(*eit);
e[i].erase(*eit);
eit = e[i].begin();
}
} int ans = ;
for (i = ; i < n; ++i) {
ans = (ans + res[i]) % MOD;
}
printf("%d\n", ans); return ;
}

hihoCoder 1175:拓扑排序二的更多相关文章

  1. hihoCoder #1175 : 拓扑排序&#183;二

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立马引 ...

  2. hihoCoder #1174:拓扑排序&#183;一

    [题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 因为今天上课的老师讲的特别无聊.小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi ...

  3. hihoCoder#1175拓扑排序应用

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了 ...

  4. hihoCoder #1175 : 拓扑排序·二

    题目链接:http://hihocoder.com/problemset/problem/1175 代码实现如下: #include <queue> #include <cstdio ...

  5. POJ 1128 Frame Stacking(拓扑排序&#183;打印字典序)

    题意  给你一些矩形框堆叠后的鸟瞰图  推断这些矩形框的堆叠顺序  每一个矩形框满足每边都至少有一个点可见  输入保证至少有一个解 按字典序输出全部可行解 和上一题有点像  仅仅是这个要打印全部的可行 ...

  6. hihoCoder 1174 : 拓扑排序·一

    题目链接:http://hihocoder.com/problemset/problem/1174 题目是中文题面我就不说题意了,要看题面的请点击上方链接~ 代码实现如下: #include < ...

  7. hihoCoder #1174 : 拓扑排序·一 (判断循环图)

    G++ 261ms 13MB 题意: 给出n门课程的修读所需要的前置课程的关系,按理说应该是个拓扑图,但是因为某些原因导致了混乱,所以有可能不是一个拓扑图.现在的问题是,判断该图是否为一个拓扑图(即无 ...

  8. hihocoder 1175

    拓扑排序 hihocoder 1175 拓扑只适用于 有向无环图中,这个指的是 1.有向的,不是那种双向可走的 2.无环,并不是不存在环,而是一定要有一个没有其他点指向这个点的点, 题目大意:一个有向 ...

  9. hihocoder1175 拓扑排序2

    #1175 : 拓扑排序·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论 ...

随机推荐

  1. 动态规划(DP),Human Gene Functions

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027 http://poj.org/problem?id=108 ...

  2. pytorch 反向梯度计算问题

    计算如下\begin{array}{l}{x_{1}=w_{1} * \text { input }} \\ {x_{2}=w_{2} * x_{1}} \\ {x_{3}=w_{3} * x_{2} ...

  3. 设置IE浏览器的默认主页

    实现效果: 知识运用: RegistryKey类的GetValue方法 public Object GetValue (string name , Object defaultValue) name ...

  4. [LuoguP1141]01迷宫

    1141 01迷宫 题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务 ...

  5. jstl 中substring,length等函数用法

    引入jstl库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%& ...

  6. Android学习笔记_3_四种布局

    Android布局是应用界面开发的重要一环,在Android中,共有四种布局方式, 分别是:FrameLayout( 帧布局 ).LinearLayout (线性布局).TableLayout(表格布 ...

  7. C#解析HTML神器 Html Agility Pack

    曾经,我傻乎乎的用正则表达式成功的解析了学校的新闻网.教务管理系统.图书馆管理系统中我想要的所有的内容.那时候废了好大的劲写那正则啊,而且最后还是各种不给力,经常会有意想不到的bug出现,最后经过无数 ...

  8. swiper插件使用技巧

    1.加载插件: <!DOCTYPE html> <html> <head> ... <link rel="stylesheet" href ...

  9. webpack——概念的引入

    ## 在网页中会引用哪些常见的静态资源?+ JS - .js .jsx .coffee .ts(TypeScript 类 C# 语言)+ CSS - .css .less .sass .scss+ I ...

  10. DataTables的相关问题集锦

    1.修改头部问题,列表加载完重新修改表头内容 使用回调函数: headerCallback: function( thead, data, start, end, display ) {        ...