G++ 261ms 13MB

题意:

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

思路:

  每次删除全部入度为0的结点,一直删下去肯定是没有任何点存在的,如果不是拓扑图的话就必有环,那么肯定有点的入度永远不为0。若到删到最后没有点存在,那么就是correct的。

 #include<bits/stdc++.h>
using namespace std;
const int N=; vector< vector<int> > vect;
int cnt[N]; //记录每个点的入度 bool cal(int n)
{
vector<int> a;//存放入度为0的点
for(int i=; i<=n; i++) //先在cnt中找到入度为0的所有点
if(!cnt[i]) a.push_back(i);
vector<int> b;//临时存放入度为0的点
while(!a.empty())
{
b.clear();
for(int i=; i<a.size(); i++) //每个入度为0的点x
{
for(int j=; j<vect[a[i]].size(); j++) //每个与x相连的点
{
cnt[vect[a[i]][j]]--;
if(!cnt[vect[a[i]][j]])//只有那些有变化的点才可能入度为0。
b.push_back(vect[a[i]][j]);
}
vect[a[i]].clear();
}
a.clear();
if(!b.empty()) a.insert(a.end(), b.begin(), b.end());
}
for(int i=; i<=vect.size(); i++)
{
if(cnt[i]>)
return false;
}
return true;
} void init(int n) //初始化用的
{
memset(cnt,,sizeof(cnt));
vect.clear();
vector<int> tmp;
for(int i=; i<=n; i++)
vect.push_back(tmp);
}
int main()
{
//freopen("e://input.txt","r",stdin);
int t, n, m, a, b;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
init(n);
for(int i=; i<m; i++)
{
scanf("%d%d",&a,&b);
vect[a].push_back(b);
cnt[b]++;
}
if(cal(n))
printf("Correct\n");
else
printf("Wrong\n");
}
return ;
}

AC代码

hihoCoder #1174 : 拓扑排序·一 (判断循环图)的更多相关文章

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

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

  2. hihoCoder 1174 : 拓扑排序·一

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

  3. ACM: hihicoder #1174 : 拓扑排序·一 STL- queue

    #1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...

  4. POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)

    题意:给出n个字符,m对关系,让你输出三种情况:     1.若到第k行时,能判断出唯一的拓扑序列,则输出:         Sorted sequence determined after k re ...

  5. hihoCoder#1175拓扑排序应用

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

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

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

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

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

  8. hihocoder1174 拓扑排序1

    #1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...

  9. Going from u to v or from v to u?_POJ2762强连通+并查集缩点+拓扑排序

         Going from u to v or from v to u? Time Limit: 2000MS   Memory Limit: 65536K       Description I ...

随机推荐

  1. HDU 1465 不容易系列之一(错排,递归)

    简而言之,就是把n个信封全部装错的可能数.(中问题,具体看题目) //当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示, //那么M(n-1)就表示n-1个编号元素放在 ...

  2. ExtJs之Ext.isEmpty

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  3. 一步完成 MySQL 向 Redis 迁移

    从mysql搬一个大表到redis中,你会发现在提取.转换或是载入一行数据时,速度慢的让你难以忍受.这里我就要告诉一个让你解脱的小技巧.使用“管道输出”的方式把mysql命令行产生的内容直接传递给re ...

  4. UML类图、接口、包、关系

    一.类图:允许我们去标记静态内容及类之间的关系. 类的基本表示法: 名称 属性(类型,可见性) 方法(参数,返回值)  tip: 显示可见性:Options->Show Visibility 显 ...

  5. Linux 删除文件夹和文件的命令

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...

  6. php with bootstrap

    最近用ThinkPHP+bootstrap3写的后台 用bootstrap结合php搭建MIS系统框架 Free Bootstrap Themes & Templates pgoa盘古OA开发 ...

  7. Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等

    http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...

  8. 4 tips for staying productive on Friday

    4 tips for staying productive on Friday如何让你的周五和周一一样有效率1.Schedule Your Day with Tasks 用任务计划一天 Sometim ...

  9. ios开发--企业帐号发布

    这两天需要发布一个ipa放到网上供其他人安装,需要用到企业级开发者账号. 首先详细说明一下我们的目标,我们需要发布一个ipa放到网上,所有人(包括越狱及非越狱设备)可以直接通过链接下载安装,不需要通过 ...

  10. spring springmvc mybatis 整合

    环境 apache-tomcat-8.0.33.jdk1.8.0_05 maven Dynamic Web Module 2.5 1.各个xml配置文件的配置 (1)pom.xml 配置清单文件 连接 ...