CSU 1081 集训队分组
题意:有n个学生,比了一场比赛,但是榜单看不到了。现在告诉你m段信息,每段信息的内容是(a,b),表示a的排名比b的高。问你能不能根据这些信息得出这场比赛的前k名。
思路:用拓扑排序找出一组符合k个人的解,然后判断这组解是否唯一,如果这组解是唯一的,那么剩下的n-k个人一定都在这k个人后面。dfs一下就行了。
代码:
#include<stdio.h>
#include<string.h>
const int N=,M=;
struct node
{
int v,next;
}e[M];
int head[N],cnt,d[N],mark[N],p[N],js,tmp[N];
void add(int u,int v)
{
e[cnt].v=v,e[cnt].next=head[u];
head[u]=cnt++;
}
void dfs(int u)
{
if(!p[u]&&!mark[u]) js++;
p[u]=;
for(int i=head[u];i!=-;i=e[i].next)
{
if(!p[e[i].v])
dfs(e[i].v);
}
}
int main()
{
int n,m,k,i,u,v,f,j;
while(scanf("%d%d%d",&n,&k,&m)!=EOF)
{
memset(head,-,sizeof(head));
memset(d,,sizeof(d));
memset(mark,,sizeof(mark));
js=cnt=;
while(m--)
{
scanf("%d%d",&u,&v);
add(u,v);
d[v]++;
}
while(js<k)
{
for(i=;i<=n&&d[i];i++);
tmp[++js]=i;mark[i]=;
d[i]--;
for(i=head[i];i!=-;i=e[i].next)
d[e[i].v]--;
}
for(i=;i<=k;i++)
{
memset(p,,sizeof(p));
js=;
dfs(tmp[i]);
if(js!=n-k) break;
}
if(i>k) printf("YES\n");
else printf("NO\n");
}
return ;
}
参考文章:http://www.cnblogs.com/algorithms/archive/2012/07/02/2573631.html
CSU 1081 集训队分组的更多相关文章
- CSU1081有向图BFS
集训队分组 Description中南大学ACM的暑期集训马上就要开始了,这次集训会将全体N名集训队员(编号分别为1, 2, …, N)按集训选拔赛的排名分成两组,前K名队员分入A组,其余队员分入B组 ...
- CSU 1326: The contest(分组背包)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 题意: n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做 ...
- CSU 1326:The contest(并查集+分组背包)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 题意:…… 思路:并查集建图处理出边,然后分组背包. 之前不会分组背包,比赛的时候也推不出来 ...
- CSU - 1580 NCPC2014 Outing(树形依赖+分组背包)
Outing Input Output Sample Input 4 4 1 2 3 4 Sample Output 4 分组背包: for 所有的组k for v=V..0 for 所有的i属于组k ...
- 51 nod 1007 正整数分组 (简单01背包) && csu 1547: Rectangle
http://www.51nod.com/onlineJudge/questionCode.html#problemId=1007¬iceId=15020 求出n个数的和sum,然后用s ...
- CSU 1639 队长,我想进集训队!
水题 #include<cstdio> int main() { int x1, x2, x3, u, h; int n; while (~scanf("%d", &a ...
- 关于ACM,关于CSU
原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- xamarin android ListView手动分组
xamarin的listview控件其实自带有分组方法,关于xamarin listview的自带分组方法请自行参考官方文档,我这里只写自己写的分组方法.xamarin自带的分组好是好,功能多,但是加 ...
随机推荐
- eclipse中的web项目路径和发布好的项目路径
现在企业开发中,我们都会创建一个javaWeb工程,在eclipse中指的是新建一个dynamic web project,创建完工程之后,我们在IDE中大体看到如下的工程目录: 我们主要关心的文件夹 ...
- ahjesus Unity3D界面快捷键
F Frame selection Tab Shift focus between first column and second column (Two columns) Ctrl/Cmd + F ...
- 如何rename sqlserver database
Problem Sometimes there is a need to change the name of your database whether this is because the or ...
- Vue数据绑定
gitHub地址:https://github.com/lily1010/vue_learn/tree/master/lesson04 一 双括号用来数据绑定 (1)写法一: {{message}}, ...
- 高清SDI编码器|上海视涛科技
SDI编码器(E500)简介 SDI编码器(E500)是上海视涛科技出品的高性能SDI编码产品.该SDI编码器是上海视涛电子完全自主研发,并适用于各种SDI信号的编码采集及网络传输的专用硬件设备.可兼 ...
- English Training Material - 02
OUTSIDE CORRESPONDENCE AND CONTACT Jared: I'm glad you could come – and you're in for a treat. Thi ...
- WKWebView API精讲(OC)
WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...
- JSP内置对象--request对象
本文主要介绍JSP中的request对象 request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttri ...
- IOS客户端Coding项目记录(五)
1:统一修改导航栏的样式,在 AppDelegate.m中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...
- Android PopupWindow使用之地区、学校选择二级联动
最近在做一个社交类APP时,希望用户在注册时根据地区来选择自己所在的学校,由于用户手动输入学校,可能会出现各种问题,不利于后面对用户信息的统计.于是决定在客户端做好设置,用户只要根据地区来选择就好.第 ...