http://acm.timus.ru/problem.aspx?space=1&num=1198

英语真的是硬伤呀 读了N遍 愣是没有读懂 最后看了别人的提示

反正是联通分量 缩点 然后对缩点后的图进行求解 缩点后的图必须有且仅有一个点入度为0

然后输出这个入度为0的点所包含的所有原来的点 (按顺序)

注意输入数据量很多 要用scanf 用cin 有可能超时

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<stack>
#include<set>
#include<map>
#include<queue>
#include<algorithm>
#include<cmath>
#define LL long long
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;const int N=2005;
const int INF=0x3f3f3f3f;
//typedef pair<int,int>point;
int head[N],I;
struct node
{int j,next;
}side[N*2000];
int dfn[N],low[N],f[N],deep;
bool visited[N],in[N];
int sum[N];
stack<int>st;
void add(int i,int j)
{side[I].j=j;side[I].next=head[i];head[i]=I++;
}
void dfs(int x)
{dfn[x]=low[x]=deep++;st.push(x);in[x]=true;visited[x]=true;for(int t=head[x];t!=-1;t=side[t].next){int j=side[t].j;if(!visited[j]){dfs(j);low[x]=min(low[x],low[j]);}else if(in[j]){low[x]=min(low[x],dfn[j]);}}if(low[x]==dfn[x]){while(st.top()!=x){in[st.top()]=false;f[st.top()]=x;st.pop();}in[st.top()]=false;f[st.top()]=x;st.pop();}
}
int main()
{int n;while(scanf("%d",&n)!=EOF){memset(head,-1,sizeof(head));I=0;for(int i=1;i<=n;++i){int k;while(scanf("%d",&k)){if(k==0) break;add(i,k);}}while(!st.empty())st.pop();memset(in,false,sizeof(in));memset(visited ,false,sizeof(visited));deep=1;for(int i=1;i<=n;++i)if(!visited[i])dfs(i);memset(sum,0,sizeof(sum));for(int i=1;i<=n;++i){for(int t=head[i];t!=-1;t=side[t].next){int j=side[t].j;if(f[i]!=f[j])++sum[f[j]];}}vector<int>vt;int flag=0;for(int i=1;i<=n;++i)if(sum[f[i]]==0){vt.push_back(i);if(flag==0)flag=f[i];else if(f[i]!=flag)flag=-1;}if(flag>0){sort(vt.begin(),vt.end());for(unsigned int i=0;i<vt.size();++i)cout<<vt[i]<<" ";}cout<<"0"<<endl;}
}

  

转载于:https://www.cnblogs.com/liulangye/archive/2013/01/18/2866704.html

1198. Jobbery相关推荐

  1. Codeforces 1198 1199

    1198 D 你需要维护一个序列,支持两种操作: 对于 \(1\le i\le n\) , \(a[i] \leftarrow \max(a[i],x)\) : 对于给定的 \(p\) , \(a[p ...

  2. hdu 1198 Farm Irrigation

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1198 题目大意: 有一大块土地需要浇水,这块土地由很多的小块土地(有十一种)组成,小块土地上有水沟, ...

  3. 信息学奥赛一本通(1198:逆波兰表达式)

    1198:逆波兰表达式 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9734     通过数: 5698 [题目描述] 逆波兰表达式是一种把运算符前置的算术表达 ...

  4. 题目1198:a+b

    题目描述: 实现一个加法器,使其能够输出a+b的值. 输入: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出: 可能有多组测试数据,对于每组数据, 输出a+b的值. 样例输入: 2 6 ...

  5. 向大佬学习C语言1198: 考试排名(二)(结构体专题)

    题目 1198: 考试排名(二)(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3737 解决: 728ACM 国际大学生程序设计竞赛,英文全称:ACM Internatio ...

  6. 1198: 考试排名(二)(结构体专题)

    1198: 考试排名(二)(结构体专题) 题目描述 ACM 国际大学生程序设计竞赛,英文全称:ACM International Collegiate Programming Contest(ACM- ...

  7. 信息学奥赛一本通 1198:波兰表达式 | OpenJudge NOI 2.2 1696:波兰表达式

    [题目链接] ybt 1198:波兰表达式 OpenJudge NOI 2.2 1696:波兰表达式 注:ybt上描述的其实是波兰表达式,而题目中的文字都是逆波兰表达式,是笔误了,应该当做波兰表达式看 ...

  8. 1198:逆波兰表达式

    1198:逆波兰表达式    <这里应该是波兰表达式(前缀表达式),而逆波兰指的是后缀表达式> 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 逆波 ...

  9. 吴昊品游戏核心算法 Round 9 —— 黑白棋AI系列之西洋跳棋(第二弹)(双向BFS+STL)(POJ 1198)...

    接上回,如图所示,这是黑白棋的一个变种,Solitaire也是一种在智能手机上普遍存在的一种游戏.和翻转棋(Flip Game)一样,西洋跳棋(Solitaire)也没有正统的黑白棋(奥赛罗,又称Ot ...

最新文章

  1. layui 横向表单_对layui中表单元素的使用详解
  2. c++ string 长度限制_String 有多长?
  3. Ubuntu18.04提示wifi无法连接
  4. 5、用枚举值表示状态、选项、状态码
  5. 线条边框简笔画图片大全_超治愈萌系手帐素材大全 美食旅游花草人物花边都备齐了...
  6. python加入中小学课程_【python即将进入中学课堂,编程从小抓起,竟然在这几点上应验了】- 环球网校...
  7. kendo Grid json解析的问题
  8. STM32-串口通信
  9. Madagascar的自定义浮点型函数--绝对值函数和最值函数
  10. [转][SVN] Hook scripts的使用方法
  11. 练字第一方案失败,转向第二方案
  12. VMware-NAT连接网络
  13. 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
  14. 怎样用计算机才能更快,如何让网速变快,详细教您怎么让电脑网速变快
  15. 读书笔记-opencv-极坐标变换
  16. 漫谈区块链“羊群效应”
  17. 供应链协作平台产品设计思维导图
  18. 【Axure基础教程】第19章 树节点
  19. 手把手教你用vue+JavaScript+openlayers+iview制作实时天气预报图
  20. Python 位置名称通过高德API获取行政区划信息ByMySQL

热门文章

  1. Flutter State生命周期 Flutter Widget生命周期 Flutter 应用程序生命周期
  2. CSS中flex和inline-flex的区别
  3. ios 内存管理的理解(一) 简述
  4. Android merge优化UI
  5. npm命令Error: EINVAL: invalid argument, mkdir
  6. 01 安装ansible
  7. Docker swarm集群搭建教程
  8. 第七天Python学习记录
  9. PHP--金额数字转换成英文
  10. [**收藏**] Warcraft 小游戏 -- Tower Defense(1) -- Flash Element TD