新牛到部队, CG 要求它们每天早上搞晨跑,从A农场跑到B农场。从A农场到B农场中有n-2个路口,分别标上号,A农场为1号, B农场为n号,路口分别为 2 ..n -1 号,从A农场到B农场有很多条路径可以到达,而CG发现有的路口是必须经过的,即每条路径都经过的路口,CG要把它们记录下来,这样CG就可以先到那个路口,观察新牛们有没有偷懒,而你的任务就是找出所有必经路口。

输入输出格式

输入格式:

第一行两个用空格隔开的整数 n ( 3<=n<=2000 )和e ( 1<=e<= 8000 )。

接下来从第2到第e + 1行,每行两个用空格隔开的整数p和q,表示路口p和q之间有路径直达。

输入数据保证必经路口一定存在,并且每个路口都和A农场、B农场相连通。

输出格式:

第一行一个整数m,表示必经路口的数目。

第二行按从小到大的顺序依次输出每个必经路口的编号,每两个数之间用一个空格隔开。

输入输出样例

输入样例#1:

6 6
1 2
2 4
2 3
3 5
4 5
5 6
输出样例#1:

2
2 5 思路:就按照题目中的样子来模拟就好。
把除了起点和终点以外的所有点都试着删除一下,看看能否走到终点,如果能走到,则这个点一定不是必经点,反之则是必经点。 代码如下:
 #include <stdio.h>
int cnt=;
int head[]={};//表头数组
int flag=;//1表示能走到终点,0表示不能
int ans[]={};//记录答案数组
int n,e;//点、边
int temp[]={};//离线记录需要删除的点
struct Edge//领接表存储类型
{
int next,to;
}edge[];//一定要大点!!应该是边数的两倍多一点!! void add(int x,int y)//添加边
{
cnt++;
edge[cnt].next=head[x];
edge[cnt].to=y;
head[x]=cnt;
} void dfs(int start,int del)
{
if(start==n)//搜到了终点,不是必经点
{
flag=;
return ;
}
temp[start]=del;//离线记录需要删除的点
for(int i=head[start];i!=;i=edge[i].next)//从start开始,每次搜索start所连接的点
{
int y=edge[i].to;//start所连接的点
if(temp[y]!=del&&y!=del) dfs(y,del);//如果走到的店点不是暂时删除的点,往下搜索,更新start为y
}
} int main()
{
int p,q;
int i;
int ans[]={};//记录答案
scanf("%d%d",&n,&e);
for(i=;i<=e;i++)//添加无向图
{
scanf("%d%d",&p,&q);
add(p,q);
add(q,p);
}
cnt=;//记录答案数目
for(i=;i<n;i++)
{
flag=;
dfs(,i);//从1号节点开始跑,依次删除编号为i的节点
if(flag==)//如果i是必经点
{
cnt++;
ans[cnt]=i;
}
}
/*============================*///输出答案
printf("%d\n",cnt);
for(i=;i<=cnt;i++)
{
printf("%d ",ans[i]);
}
printf("\n");
/*============================*///输出答案
return ;
}
 

洛谷-跑步-NOI导刊2010提高的更多相关文章

  1. 洛谷P1800 software_NOI导刊2010提高(06)

    P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术 ...

  2. 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)

    P1800 software_NOI导刊2010提高(06) 标签 二分答案 难度 普及/提高- 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每 ...

  3. 洛谷 P1800 software_NOI导刊2010提高(06)

    题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...

  4. [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)

    [NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...

  5. [NOI导刊2010提高]黑匣子

    OJ题号:洛谷1801 思路:建立一个大根堆.一个小根堆.大根堆维护前i小的元素,小根堆维护当前剩下的元素. #include<cstdio> #include<queue> ...

  6. NOI导刊2010提高装备运输

    www.luogu.org/problem/show?pid=1794 挺裸的一题背包,算很基础. 可以运用的技巧是三维->二维(节省空间还能少敲一点代码 #include<iostrea ...

  7. 洛谷P1943 LocalMaxima_NOI导刊2009提高(1)(分段打表)

    显然只需要算出每个数比前面所有数大的期望然后全部加起来就好了,一个数的期望怎么算呢? 对于一个数我们需要考虑比它大的数,因为比它小的数放它前面放它后面都可以,但是比它大的数只能放它后面.考虑大于等于它 ...

  8. NOI导刊2010提高(06) 黑匣子

    题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...

  9. 洛谷 P1943 LocalMaxima_NOI导刊2009提高(1)

    我们先考虑第i大数,比它大的数有(n-i)个,显然要使i是Local Maxima,比它大的数必须放在它后面,那么它是Local Maxima的期望是: 那么n个数中Local Maxima个数的期望 ...

随机推荐

  1. HTML5离线存储和本地缓存

    一.离线存储 有一个web应用有三个文件index.html,a.js,b.css,现在需要把js和css文件缓存起来 1.在index.html里加上<html manifest=" ...

  2. python selenium cookie 登录

    概要: 1.正常登录,使用selenium获取cookie: 2.保存cookie: 3.使用cookie登录. 4.python--2.7,selenium--3.4.1 步骤1 正常登录,使用se ...

  3. 第12条:不要在for和while循环后面写else块

    核心知识点: (1)一般的if/else是前面不执行,后面才执行,循环下面的else是前面执行完后面才会执行,如果是break打断也不会执行.循环为空或False也不执行. (2)try/expect ...

  4. Navicat Premium试用期破解方法(转)

    转载网址https://blog.csdn.net/Jason_Julie/article/details/82864187 1.按步骤安装Navicat Premium,如果没有可以去官网下载:ht ...

  5. JVM对象

    对象 Java虚拟机采用自动的内存管理和自适应的优化策略.但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的. 逃逸分析:对象的作用范围只在本线程范围,如方 ...

  6. php......调研投票练习

    调研题目与调研选项显示页面<style type="text/css"> #list{ width:400px; height:200px;} #jieguo{ wid ...

  7. Executor中的类

    Executor框架 其中ThreadPoolExecutor非常重要,通过这个类自定义线程池 public ThreadPoolExecutor(int corePoolSize, //线程池里面的 ...

  8. Data Structure Array: Sort elements by frequency

    http://www.geeksforgeeks.org/sort-elements-by-frequency-set-2/ #include <iostream> #include &l ...

  9. Redis的管理

    一.redis持久化 redis是内存数据库,一切的数据都是存储到内存中的,我们知道,当服务器意外关机,那么在内存中的数据都将丢失,但是redis为我们提供持久化功能,这样就能把数据保存到硬盘上.re ...

  10. Spring Cloud2.0之整合Consul作为注册中心

    使用Consul来替换Eureka Consul简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. 它具有很多优点.包括: 基于 raft ...