hihoCoder #1174 : 拓扑排序·一 (判断循环图)
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 : 拓扑排序·一 (判断循环图)的更多相关文章
- hihoCoder #1174:拓扑排序·一
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 因为今天上课的老师讲的特别无聊.小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi ...
- hihoCoder 1174 : 拓扑排序·一
题目链接:http://hihocoder.com/problemset/problem/1174 题目是中文题面我就不说题意了,要看题面的请点击上方链接~ 代码实现如下: #include < ...
- ACM: hihicoder #1174 : 拓扑排序·一 STL- queue
#1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...
- POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)
题意:给出n个字符,m对关系,让你输出三种情况: 1.若到第k行时,能判断出唯一的拓扑序列,则输出: Sorted sequence determined after k re ...
- hihoCoder#1175拓扑排序应用
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立刻引起了大家的讨论,当然小Hi和小Ho也参与到了 ...
- hihoCoder #1175 : 拓扑排序·二
[题目链接]:click here~~ 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho所在学校的校园网被黑客入侵并投放了病毒.这事在校内BBS上立马引 ...
- hihoCoder #1175 : 拓扑排序·二
题目链接:http://hihocoder.com/problemset/problem/1175 代码实现如下: #include <queue> #include <cstdio ...
- hihocoder1174 拓扑排序1
#1174 : 拓扑排序·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 由于今天上课的老师讲的特别无聊,小Hi和小Ho偷偷地聊了起来. 小Ho:小Hi,你这学期有选 ...
- 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 ...
随机推荐
- DB2学习
1.为了使用ORG_ID,由于OCRM_F_MM_MKT_PLAN a 没有ORG_ID,但是OCRM_F_MM_EXECUTE_INST_DESC d 表里面有,可以使a表连接b表,创建临时表t. ...
- QString::toWCharArray可以拷贝到宽字符串里
wchar_t * sourcepath=new wchar_t[MAX_PATH];int s1=str.toWCharArray(sourcepath); sourcepath[s1]=0;
- Linux下SSH各配置项解释
关于ssh 设置的相关总结(ssh最大连接数.ssh连接时长.安全性配置等) 以redhat6.3为例 ssh配置文件在: /etc/ssh/sshd_config 可以打开查看相应配置,默认情况下只 ...
- 280. Wiggle Sort
题目: Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] ...
- iOS:地图:MapKit和CoreLocation
地图:MapKit和CoreLocation 简介: 现在很多的社交软件都引入了地图和定位功能,要想实现这2大功能,那就不得不学习其中的2个框架:MaKit和CoreLocation CoreLoca ...
- JSP文件下载及出现getOutputStream() has already been called for this response的解决方法
JSP文件下载及出现getOutputStream() has already been called for this response的解决方法 http://iamin.blogdriver.c ...
- git - 简易指南
http://www.bootcss.com/p/git-guide/ git - 简易指南
- 基于矩阵模式的 Web 软件测试手段(转)
http://www.ibm.com/developerworks/cn/web/1410_dujing_matrixfortest/ 在 Web 测试中,我们经常针对某个测试点进行多种场景测试,或者 ...
- 自定义View(9)关于onLayout
1,何时被调用 当外层容器组件调用其内部组件的layout(l,r,t,b)时,内部组件的onLayout就被调用.与onMeasure类似. 2,注意 onLayout对ViewGroup及子类才有 ...
- 第九篇 ERP实施项目中需求分析及方案设计的通用思路
顾问实施ERP就好想医生给患者看病抓药,不但具有类似的过程,而且具有其通用的思路. --详见http://bbs.erp100.com/thread-272856-1-1.html 顾问实施ERP就好 ...