学霸周选课

Time Limit: 1000 MS     Memory Limit: 128 MB
Submit Status

众所周知周大爷不仅编程了得,专业课成绩更是名列前茅,恰巧又到了选课的季节,神秘的zin作为周大爷的好朋(基)友,给了周大爷一份课表,这个课 表和一般的课表有些不同,它是一个有向无环图,图中每个节点表示一门课程,如果课程A有一条通向课程B的有向边,那么意味着,如果选了课程A,就能选课程B ,对于没有前驱的课程可以直接选择。

周大爷看了课表后,发现自己非常想学课程kk,但是周大爷又不想花太多精力去学别的课程,现在请你帮助周大爷计算为了选上课程kk最少一共要选多少门课程(kk包含在内)。

Input

一个正整数nn(1≤n≤2000001≤n≤200000),kk (1≤k≤n1≤k≤n) ,mm(1≤m≤min(1000000,n(n−1)2)1≤m≤min(1000000,n(n−1)2)) 表示图中有mm条边.接下来mm行,每一行输入两个整数aa,bb(1≤a,b≤n1≤a,b≤n)表示如果选了课程aa就能选择课程bb。

Output

周大爷最少要选多少门课程

Sample input and output

Sample Input Sample Output
3 2 1
1 2
2

Hint

样例不是test1

Source

2018 UESTC ACM Training for Graph Theory    
题解:就是求要学这门课程,至少学几们课;我门可以用度,没输入一个 u ,v 使ind[v]++;

然后利用vector存储u后面的v,每次出来一个v,该v的度减一,该v的cost加一(cost要始终保持为当前最小的),

AC代码为:

#include<bits/stdc++.h>
using namespace std; const int maxn=2e5+10;
int n,k,m,u,v,ind[maxn],cost[maxn];
vector<int> V[maxn]; void toposort()
{
queue<int> q;
for(int i=1;i<=n;i++) if(!ind[i]) q.push(i),cost[i]=1;
while(!q.empty())
{
int st=q.front();q.pop();
for(int i=0;i<V[st].size();i++)
{
int num=V[st][i];
cost[num]=min(cost[num],cost[st]+1);
ind[num]--;
if(!ind[num]) q.push(num);
}
}
} int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
memset(ind,0,sizeof ind);
memset(cost,0x3f3f3f3f,sizeof(cost));
cin>>n>>k>>m;
for(int i=0;i<m;i++)
{
cin>>u>>v;
ind[v]++;
V[u].push_back(v);
}
toposort();
cout<<cost[k]<<endl;
return 0;
}

   

度及拓扑图的使用-UESTC1958学霸周选课的更多相关文章

  1. 矩阵解压,网络流UESTC-1962天才钱vs学霸周2

    天才钱vs学霸周2 Time Limit: 500 MS     Memory Limit: 128 MB Submit Status 由于上次的游戏中学霸周输了,因此学霸周想出个问题为难天才钱,问题 ...

  2. 最小生成树唯一性判断-UESTC1959天才钱vs学霸周

    天才钱vs学霸周 Time Limit: 1000 MS     Memory Limit: 256 MB Submit Status 有一天,天才钱和学霸周闲的无聊玩起了游戏,游戏内容是这样的,现在 ...

  3. CDOJ 1962 天才钱vs学霸周2【最大流】

    以s=0,t=n+m+1分别为超级源点和超级汇点.网络流中的流量以0为开始,题目要求从1到20,我们先把每个点都减去1,即ai - m,bi - n.然后源点s与n个顶点连容量为ai的路,汇点t与m个 ...

  4. 【Win 10 应用开发】MIDI 音乐合成——乐理篇

    针对 MIDI 音乐的 API ,其实在 Win 8.1 的时候就出现.在UWP中采用了新的驱动模式,MIDI 消息传递更加高效. 首先得说明的是,UWP 的 MIDI 相关 API 不是针对 MID ...

  5. C-02 推荐系统

    目录 推荐系统 一.导入模块 二.收集数据 三.数据预处理 3.1 无评分电影处理 四.协同过滤算法-基于用户的推荐 4.1 余弦相似度 4.2 数据标准化处理 五.预测 六.测试 更新.更全的< ...

  6. 一年读100本书---HHR,NZJ---19年最后4个月

    那些自律到极致的人,都拥有了开挂的人生.生物钟,绝对一致之后,一切都会很高效. 19年最后一个季度的HHR计划:还剩下3个月的时间,主要搞定几件事情:创业(以太一堂,混沌大学),工作能力(推荐算法工程 ...

  7. Hive实战—时间滑动窗口计算

    关注公众号:大数据技术派,回复: 资料,领取1024G资料. 目录 时间滑动计算 外部调用实现时间循环 自关联实现滑动时间窗口 扩展基于自然周的的滚动时间窗口计算 总结 时间滑动计算 今天遇到一个需求 ...

  8. 软件工程(FZU2015)学生博客列表(最终版)

    FZU:福州大学软件工程 张老师的博客:http://www.cnblogs.com/easteast/ 经过前两周选课,最后正式选上课程的所有学生博客如下: 序号 学号后3位 博客 1 629 li ...

  9. 软件工程(FZU2015) 学生博客列表(最终版)

    FZU:福州大学软件工程 张老师的博客:http://www.cnblogs.com/easteast/ 经过前两周选课,最后正式选上课程的所有学生博客如下: 序号 学号后3位 博客 1 629 li ...

随机推荐

  1. docker监控容器

    Weave Scope: 是能够自动生成一张 Docker 容器web动态图的监控软件,能够让我们直观地理解.监控和控制容器. 监控一台主机: 第一步:安装 [root@localhost ~]# c ...

  2. C# III: 数据库基本操作

    用C#操作数据库——数据库使用SQL Server为例,对应的namespace是System.Data.SqlClient. 读取数据 从数据库中读取数据是最基本的操作了. 示例代码如下: Stri ...

  3. 你能说说Java中Comparable和Comparator的区别吗

    之前面试中被问到这个问题,当时不屑(会)回答,下来特意查了查,整理如下. Java 中为我们提供了两种比较机制:Comparable 和 Comparator,二者都是用来实现对象的比较.排序. 下面 ...

  4. 50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

    目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶.视频监控.工业质检.医疗诊断等 ...

  5. pat 1011 World Cup Betting(20 分)

    1011 World Cup Betting(20 分) With the 2010 FIFA World Cup running, football fans the world over were ...

  6. 基于Vue的日历组件

    可以标注重要日子 自己写的,可能不是特别很好,大家多提意见!!! 地址:https://github.com/jsLWQ/calendar

  7. Elasticsearch从入门到放弃:文档CRUD要牢记

    在Elasticsearch中,文档(document)是所有可搜索数据的最小单位.它被序列化成JSON存储在Elasticsearch中.每个文档都会有一个唯一ID,这个ID你可以自己指定或者交给E ...

  8. vue跨域处理

    本人对于vue跨域处理流程不是很清楚,特此理顺一遍. 1.在config中进行配置,该文件不是都存在,需要自己建: proxyTable,这个参数主要是一个地址映射表,你可以通过设置将复杂的url简化 ...

  9. 2019-9-20:渗透测试,基础学习,笔记,metasploit的基础使用

    使用kali下metasploit生成木马,控制windows系统 kali基于debin的数字取证系统,上面集成了很多渗透测试工具,前身为bt r3(BrackTrack) Metasploit,是 ...

  10. mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)

    1 mysql基本命令 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 3.远程链接mysq ...