codevs2833 奇怪的梦境 x
2833 奇怪的梦境
Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息。屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及的按钮则可以在任何时候按下。可是Aiden发现屏幕上所给信息似乎有矛盾,请你来帮忙判断。
第一行,两个数N,M,表示有编号为1...N这N个按钮,屏幕上有M条信息。
接下来的M行,每行两个数ai,bi,表示bi按钮要在ai之后按下。所给信息可能有重复,保证ai≠bi。
若按钮能全部按下,则输出“o(∩_∩)o”。
若不能,第一行输出“T_T”,第二行输出因信息有矛盾而无法确认按下顺序的按钮的个数。输出不包括引号。
3 3
1 2
2 3
3 2
T_T
2
对于30%的数据,保证0<N≤100。
对于50%的数据,保证0<N≤2000。
对于70%的数据,保证0<N≤5000。
对于100%的数据,保证0<N≤10000,0<M≤2.5N。
思路:
拓扑排序,两种写法
代码一:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue> using namespace std; const int M = ;
int n,m,ans,now;
int ru[M],head[M];
queue<int>q; struct A{
int next,to;
}e[*M]; void add(int u,int v)
{
e[++now].to=v;
e[now].next=head[u];
head[u]=now;
} void topo()
{
for(int i=;i<=n;i++)
if(ru[i]==)
q.push(i);
while(!q.empty())
{
int u=q.front();
q.pop();
ans++;
for(int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].to;
ru[v]--;
if(ru[v]==)
q.push(v);
}
}
if(ans<n)
{
printf("T_T\n%d",n-ans);
return;
}
else
{
printf("o(n_n)o");
return;
}
} int main()
{
scanf("%d%d",&n,&m);
memset(head,-,sizeof(head));
for(int i=,a,b;i<=m;i++)
{
scanf("%d%d",&a,&b);
add(a,b);
ru[b]++;
}
topo();
return ;
}
队列版

代码二:
#include <iostream>
#include <cstdio>
#include <queue> using namespace std; const int M = ;
int n,m,k,ans;
bool dad[M][M];
int ru[M]; int main()
{
scanf("%d%d",&n,&m);
for(int i=,a,b;i<=m;i++)
{
///b在a之前按下
scanf("%d%d",&a,&b);
if(!dad[a][b]) ru[b]++;
dad[a][b]=true;
}
for(int i=;i<=n;i++)
{
k=;///记得将k进行初始化,防止漏下找入度为零的点
while(k<=n && ru[k]!=) k++;///找入度为零的点
if(k<=n && ru[k]==)
{
ans++;///统计答案个数
ru[k]=-;///删边
for(int j=;j<=n;j++)
if(dad[k][j])
ru[j]--;///删边
}
}
if(ans==n) printf("o(n_n)o");
else printf("T_T\n%d\n",n-ans);
return ;
}
for循环版

Ps:如果让我进行选择,我会毫不犹豫的选择第一种,因为跑得快而且内存占用小!!!
codevs2833 奇怪的梦境 x的更多相关文章
- codevs2833 奇怪的梦境
2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困 ...
- 奇怪的梦境(codevs 2833)
题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息.屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明 ...
- Codevs 2833 奇怪的梦境
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还 ...
- 2833 奇怪的梦境 未AC
2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小 ...
- CODEVS——T 2833 奇怪的梦境
http://codevs.cn/problem/2833/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descr ...
- 【CODEVS】2833 奇怪的梦境
2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很 ...
- [wikioi]奇怪的梦境
http://wikioi.com/problem/2833/ 拓扑排序,居然1A,哈哈. #include <cstdio> #include <iostream> #inc ...
- 【拓扑排序】CODEVS 2833 奇怪的梦境
拓扑排序模板. #include<cstdio> #include<vector> #include<stack> using namespace std; #de ...
- 1、Codevs 必做:2833、1002、1003、2627、2599
2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困 ...
随机推荐
- spring boot-14.集成MyBatis
1.如何使用注解版Mybatis? (1)引入mybatis ,druid,Mysql 的依赖,环境搭建可以参考第13篇的内容 <dependency> <groupId>or ...
- c语言程序命名规范:函数、变量、数组、文件名
函数: //send or recv data task void send_recv_data(void *pvParameters); //get socket error code. retur ...
- noip2018day1-赛道修建
题目描述 \(C\) 城将要举办一系列的赛车比赛.在比赛前,需要在城内修建 $m $条赛道. \(C\) 城一共有 \(n\) 个路口,这些路口编号为 \(1,2,-,n\)有 $n-1 $条适合于修 ...
- Vue.js路由管理器 Vue Router
起步 HTML <script src="https://unpkg.com/vue/dist/vue.js"></script> <script s ...
- Exchange 2010的部署
实验拓扑: 实验准备条件:计算机基本配置的准备:DC (vbers):配置IP地址.子网掩码.网关EX (vbers2):配置IP地址.子网掩码.网关.指定DNS 域环境搭建的准备1.在计算机名为vb ...
- 关于strcpy的安全函数的选择
1)如果整个程序,在进行字符拷贝时,这个拷贝字符串的完整性,不影响整个程 序的运行,可以让其截取一部分字符串,程序继续执行.那么我们就可以选择安全 函数:strncpy_s 2)如果在进行字符串拷贝时 ...
- nodejs fs copy本地文件src dst
1. // fs.writeFileSync(pathNewFile, fs.readFileSync(fileName)); 2. fs.createReadStream(fileName).p ...
- python-装饰器2
python-装饰器2 1.函数既“变量 def bar(): print("in the bar") def foo(): print("in the foo" ...
- 一、模型验证CoreWebApi 管道方式(非过滤器处理)2(IApplicationBuilder扩展方法的另一种写法)
一. 自定义中间件类的方式用一个单独类文件进行验证处理 Configure下添加配置 //app.AddAuthorize(); AddAuthorize因为参数(this IApplicationB ...
- Qualcomm_Mobile_OpenCL.pdf 翻译-10-总结
这篇文档主要是介绍了关于在Adreno GPUs上优化OpenCL代码的详细方法.文档中提供的大量信息能够帮助开发者理解OpenCL基础和Adreno结构,还有最重要的,掌握OpenCL优化技能. O ...