新牛到部队, 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. linux 11 -- mount,umount

    Linux 文件系统是一个以 / 为根的大树,我们在不同的设备和分区上都有文件系统.我们如何处理这种明显的不一致性?根 (/) 文件系统是在初始化过程中挂载的.您创建的其他每个文件系统在挂载 在挂载点 ...

  2. python基础4 ----字符编码

    python基础---字符编码 一.了解字符编码 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容 ...

  3. Sqoop架构以及应用介绍

    本篇文章在具体介绍Sqoop之前,先给大家用一个流程图介绍Hadoop业务的开发流程以及Sqoop在业务当中的实际地位.  如上图所示:在实际的业务当中,我们首先对原始数据集通过MapReduce进行 ...

  4. c的详细学习(4)选择结构与循环结构的编程练习

        本节介绍c语言的编程实例.     (1)求方程ax^2+bx+0的解: 方程有解有以下几种可能: 1.b^2-4ac=0,方程有两个相等实根. 2.b^2-4ac>0,方程有两个不等实 ...

  5. 尽量不要在viewWillDisappear:方法中移除通知

    1.iOS7新增加了导航控制器侧滑手势,当触发侧滑返回时,会调用系统的viewWillDisappear:方法,取消侧滑返回时又会调用viewWillAppear:方法.   2.在做手势和通知等一系 ...

  6. ACM,我回来了!

    经过两天的时间,到了家一趟! 我终于又重新回到ACM实验室了!,有点头晕啊!!!

  7. Ogre场景编辑器Ogitor源代码的构建

    本文转自:http://blog.csdn.net/zhengkangchen/article/details/6000769 Ogitor-0.4.2源代码构建,不少时间,这里记录一下: 下载源代码 ...

  8. HDU 4089 Activation:概率dp + 迭代【手动消元】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4089 题意: 有n个人在排队激活游戏,Tomato排在第m个. 每次队列中的第一个人去激活游戏,有可能 ...

  9. Delphi中那些容易混淆的基础

    @.^.Addr.Pointer Delphi(Pascal)中有几个特殊的符号,如@.^等,弄清楚这些符号的运行,首先要明白Delphi指针的一些基础知识:指针,是一个无符号整数(unsigned ...

  10. java--xml文件读取(SAX)

    SAX解析原理: 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏: 创建xml解析需要的handler(parser.parse(file,handler)) package com ...