题目链接:http://codeforces.com/problemset/problem/350/B

一开始想复杂了,建了张图,结果效率太低T了。其实用数组存可以了,结果发现的时候快没时间了,修改好前5分钟比赛就结束了,泪目。。。

题目大意:每个地点有用1表示旅馆,用0表示是山地。每个地点用一个数表示能从哪一个地点到达这里(单向)。现在要求一条最长的路径,除了终点为旅馆外,前面的路径上都是山地。要求前面的路上不能有分岔路,即从该点出发只有一条可行路。

解题思路:开一个数组存到达该点的始发地,再开一个数组存以某点为起点的路径有几条,不为1即可删去不计。然后从每一个旅馆开始向前深搜,找出最长的路径。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
#define N 100005
#define M 200010
int ob[N],ro[N];
int hotel[N],K,road[N],road2[N];//hotel记录每个旅馆的位置,road存最长路径
int v[N],link[N];//v记录到达该点的始发地,link记录以每一个点为起点有多少条路径
void dfs(int now ,int num)//now表示搜到了哪一个,num表示加上该点路径有多长
{
int i,k;
if(link[now]>)
{
return;
}
road2[num-]=now;
if(K<num&&(link[v[now]]>||v[now]==))//当搜到下一个点有超过一条路径,或者连接该点的是一条无效路径时可更新最大值
{
K=num;
for(i=;i<K;i++)
road[i]=road2[i];
}
if(v[now]&&link[v[now]]<=)
dfs(v[now],num+);
}
int main()
{
memset(link,,sizeof(link));
int n,i,cnt=,e=;
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d",&ob[i]);
if(ob[i]==)
hotel[cnt++]=i;
}
for(i=;i<=n;i++)
{
scanf("%d",&ro[i]);
if(ro[i]){
v[i]=ro[i];
link[ro[i]]+=;
}
}
for(i=;i<cnt;i++)
{
if(K==)
{
K=;
road[]=hotel[i];
}
dfs(hotel[i],);
}
printf("%d\n",K);
for(i=K-;i>=;i--)
{
if(i)
printf("%d ",road[i]);
else
printf("%d",road[i]);
}
printf("\n");
return ;
}

Codeforces 350B Resort的更多相关文章

  1. CodeForces - 350B(反向建图,)

    B - Resort CodeForces - 350B B. Resort time limit per test 2 seconds memory limit per test 256 megab ...

  2. 【Codeforces 350B】Resort

    [链接] 我是链接,点我呀:) [题意] [题解] 我们可以把原图的边都反向一下. 然后以每个休息点作为起点,进行dfs. 每次在扩展节点y的时候,要求这个点y必须只有一个出度,然后就能走多远就走多远 ...

  3. Codeforces Round #203 (Div. 2)B Resort

    Resort Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  4. CCPC-Wannafly Summer Camp 2019 Day1

    A - Jzzhu and Cities CodeForces - 449B 题意:n座城市,m条路,k条铁路啥的吧,然后要求最多能删多少条铁路保持1到$n$的最短路不变. 思路:因为铁路是从1出发的 ...

  5. Codeforces Round #222 (Div. 1) C. Captains Mode 状压

    C. Captains Mode 题目连接: http://codeforces.com/contest/377/problem/C Description Kostya is a progamer ...

  6. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  7. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  8. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  9. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

随机推荐

  1. Invalid segment BIN$xxx and dba_recyclebin was empty (回收站空,释放无效的BIN$xx空间)

    近来有套库空间紧张,发现有很大BIN$开头的TABLE partition,index partition 类型的段,查询确认是2个月前删除的对象,手动清空过dba_recyclebin使用purge ...

  2. 24种设计模式--模版方法模式【Template Method Pattern】

    周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的 ...

  3. Angularjs简介

    很久没有系统学习一个新技术了,angularjs将会比较系统的讲解这个技术的语法.应用.次类型的博客将会持续更新,博主也是一个初学者,如果有问题欢迎留言讨论. angularjs简介. angular ...

  4. Linux权限体系总结

    总结 1.  LINUX9位权限及rwx字符的作用.对应的数字及对应的用户和用户组图解. 2.  rwx对文件来说代表什么意思. 3.  rwx对目录来说代表什么意思. 4.  企业生产环境目录设置权 ...

  5. 查看linux进程(强制中止进程),服务及端口号,

    进程状态查询 ps -aux [test@pan ~]$ ps -aux USER     PID    %CPU    %MEM    VSZ  RSS     TTY   STAT  START  ...

  6. js 删除数组方法

    今天遇到一个比较脑残的问题 ,在在用js删除数组的时候 delete 数组[下标]的方法删除数组时,该数组的下标变为null,但是数组的长度并没有发生相应的变化 转而使用splice(小标,第N个)删 ...

  7. TCP/IP笔记 应用层(2)——FTP

    1. FTP(File Transfer Protocol) 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务.FTP 的主要功能是减少或消除在不同操作系统下处理文 ...

  8. Start an installation from GRUB

    Start an installation from GRUB Description This tip will show you how to start an installation for ...

  9. 简单学C——第五天

    结构体 首先明确,结构体是一种构造的数据类型,是一种由多个数据类型如 int,char,double,数组或者结构体......组成的类型,现在告诉大家如何定义一个结构体.在定义int整型变量时,大家 ...

  10. jquery学会的

    1.$("#id")    $("xxxxx") (input, body) $(".class") 2. $("#id  xxx ...