cojs 1175. [顾研NOIP] 旅游电车
1175. [顾研NOIP] 旅游电车
★★☆ 输入文件:buss.in
输出文件:buss.out
简单对比
时间限制:1 s 内存限制:256 MB
【问题描述】
- Henryy国正致力于首都的一个旅游电车建设工程。首都有N个旅游景区。Henryy国的电车永远只沿道路规定的方向行驶,为了不使投入使用的电车有可能无法回到它的起始站,Henryy希望知道他的首都的可以在哪些景区设置站点。一个景区可以被设置成车站,当且仅当对于任意一个从该景区出发所能到达的景区,均至少有一条路可回到该景区。你的同事已完成了一份景区之间的道路连通情况的报告。报告中将给出首都的景区数目N、道路总数M以及一些形如“景区A和景区B之间有一条从A到B的单向道路”的信息。现在明确你的任务:根据报告中的信息,列出所有可以被设置成车站的景区。
【输入文件】
- 输入文件由多份报告组成(这些报告相互无任何联系),每份报告包括:N,M,接下来M对整数Ai、Bi (1<=I<=M)表示Ai和Bi之间有一条单向道路Ai->Bi。仅一个包含整数N=0的报告表示你的工作结束,你的程序不应该对此有任何反应。各整数间用空格或空行分隔。对于任意景区,分别以该景区为起点或终点的道路总数均不超过50。
【输出文件】
- 对于每份报告,输出一行列表包括:所有能被设置成电车站点的景区编号,各编号之间用一个空格隔开。
【样例输入】
- 5 6
- 1 2
- 2 3
- 3 4
- 4 1
- 2 5
- 5 2
- 1 0
- 0
【样例输出】
- 1 2 3 4 5
- 1
【数据约定】
- 对于40%的数据,有N<=200。
- 对于100%的数据,有N<=5000,M<=50000。
题解:
很明显的缩点、重建图。重建图之后判断出度,没有出度的新点就可以设置站点。
AC代码:
- #include<cstdio>
- #include<cstring>
- #include<vector>
- #include<stack>
- using namespace std;
- #define N 100010
- int n,m,sd,pd,id[N],low[N],dfn[N];
- bool mark[N];
- stack<int>s;
- vector<int>grap[N];
- void tarjan(int v){
- low[v]=dfn[v]=++pd;
- mark[v]=;
- s.push(v);
- for(int i=;i<grap[v].size();i++){
- int w=grap[v][i];
- if(!dfn[w]){
- tarjan(w);
- low[v]=min(low[v],low[w]);
- }
- else if(mark[w]){
- low[v]=min(low[v],dfn[w]);
- }
- }
- int u;
- if(low[v]==dfn[v]){
- sd++;
- do{
- u=s.top();
- s.pop();
- id[u]=sd;
- mark[u]=;
- }while(u!=v);
- }
- }
- int main(){
- freopen("buss.in","r",stdin);
- freopen("buss.out","w",stdout);
- while(scanf("%d",&n)==){
- if(!n) break;
- scanf("%d",&m);
- if(n==&&m==){printf("");continue;}
- sd=;pd=;
- memset(low,,sizeof low);
- memset(dfn,,sizeof dfn);
- memset(mark,,sizeof mark);
- memset(id,,sizeof id);
- while(!s.empty()) s.pop();
- for(int i=,x,y;i<=m;i++) scanf("%d%d",&x,&y),grap[x].push_back(y);
- for(int i=;i<=n;i++) if(!dfn[i]) tarjan(i);
- int in[N]={},out[N]={};
- for(int i=;i<=n;i++){
- for(int j=;j<grap[i].size();j++){
- int k=grap[i][j];
- if(id[i]!=id[k]){
- in[id[k]]++;
- out[id[i]]++;
- }
- }
- }
- for(int i=;i<=n;i++) if(!out[id[i]]) printf("%d ",i);putchar('\n');
- for(int i=;i<=n;i++) grap[i].clear();
- }
- return ;
- }
cojs 1175. [顾研NOIP] 旅游电车的更多相关文章
- COGS——T 1175. [顾研NOIP] 旅游电车
http://www.cogs.pro/cogs/problem/problem.php?pid=1175 ★★☆ 输入文件:buss.in 输出文件:buss.out 简单对比时间限制: ...
- 旅游电车(cogs 1175)
[问题描述] Henryy国正致力于首都的一个旅游电车建设工程.首都有N个旅游景区.Henryy国的电车永远只沿道路规定的方向行驶,为了不使投入使用的电车有可能无法回到它的起始站,Henryy希望知道 ...
- [转] ACM中国国家集训队论文集目录(1999-2009)
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...
- NOI 国家集训队论文集
鉴于大家都在找这些神牛的论文.我就转载了这篇论文合集 国家集训队论文分类 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化 ...
- ACM/IOI 历年国家集训队论文集和论文算法分类整理
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率--从IOI98试题PICTURE谈起> 来煜坤:<把握本质,灵活运用--动态规划的深入探讨> 齐鑫:<搜索方法 ...
- ACM/IOI 国家队集训队论文集锦
转自:https://blog.csdn.net/txl199106/article/details/49227067 国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98 ...
- [loj#539][LibreOJ NOIP Round #1]旅游路线_倍增_dp
「LibreOJ NOIP Round #1」旅游路线 题目链接:https://loj.ac/problem/539 题解: 这个题就很神奇 首先大力$dp$很好想,因为可以把一维放到状态里以取消后 ...
- NOIp模拟赛 旅游
很神奇的一道题,金策大爷给的题解: 什么叫神犇什么叫蒟蒻? IOI冠军的一句基本相同让我思考了一下午. 看完了题解我就想都没想开始用遍历二分图搞,但是搞到了65分后就总是会WA掉7组. 然后仔细的看了 ...
- 「LibreOJ NOIP Round #1」旅游路线
Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...
随机推荐
- [Windows Server 2012] SQL Server 备份和还原方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:SQL S ...
- SDK _ 静态控件的使用
静态控件的使用 静态控件主要区分两种使用方式:文本 \ 图片 在使用静态控件的时候,ID始终默认为 IDC_STATIC,需要进行更改 怎样通过可视化编程显示一张图片 需要添加一个位图资源 需要添加一 ...
- 使用Way.EntityDB进行Entity Framework Core数据库建模
Way.EntityDB是一个基于EF Core的数据层框架,它取消了EF Core的Migration机制,因为Migration并不是通用的,比如说sql server生成的migration,如 ...
- Mybatis逆向工程使用方法
使用官方网站的mapper自动生成工具mybatis-generator-core-1.3.2来生成po类和mapper映射文件. 一.mapper生成配置文件 在generatorConfig.xm ...
- 05Servlet example
dgdfgdfggggggg Servlet 表单数据 在客户端,GET通过URL提交数据,数据在URL中可见:POST把数据放在form的数据体内提交.GET提交的数据最多只有1024字节:POST ...
- linux网络编程——域名转换 gethostbyname与gethostbyaddr
域名转换 #include <netdb.h> struct hostent *gethostbyname(const char *name); 参数: name: 执行主机名的指针 返回 ...
- 这几道Java集合框架面试题在面试中几乎必问
Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全: 2. 底层数据结构: Arraylis ...
- Java:冒泡排序 | 二分查找
2018-10-29 20:16:46 冒泡排序 例子(对数字排序): 假设有这样一组数字:32, 8, 128, 2, 64 现在对其进行冒泡排序(*表示下次比较的开始数字): 32>8? t ...
- response对象设置输出缓冲大小
response对象设置输出缓冲大小 制作人:全心全意 通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,在计算机术语中,缓冲区被定义为暂时放置输入或输出资料的内存. ...
- buf.writeUIntBE()函数详解
buf.writeUIntBE(value, offset, byteLength[, noAssert]) buf.writeUIntLE(value, offset, byteLength[, n ...