题意:

      这个是The 2014 ACM-ICPC Asia Mudanjiang Regional First Round 的C题,这个题目当时自己想的很复杂,想的是优先队列广搜,然后再在前向星里排序,结果写了好长,然后wa掉了,还好后来被队友A了,题意是给你一个无向图,然后让你遍历所有的点,但是有一些点的之间的遍历顺序有限制,最后问你能否遍历所有点。

思路:

       今早起来才用自己的思路A了这个题,其实我们可以按照限制的顺序,一个一个枚举,对于当前的这个点,我们从它开始搜,见到限制的点就continue,其他的就继续遍历,只要当前的这个点能找到一个之前限制点搜的时候遍历过的点就行(除了第一个点),就这样遍历到最后,然后看看是否所有的点都被mark了就行了,具体看代码吧。


#include<stdio.h>
#include<string.h>
#include<queue> #define N_node 110000
#define N_edge 440000 using namespace std; typedef struct
{
int to ,next;
}STAR; STAR E[N_edge];
int list[N_node] ,tot;
int mk_cgq[N_node] ,mark[N_node] ,mk[N_node];
int cgq[N_node];
int ok;
queue<int>q; void add(int a ,int b)
{
E[++tot].to = b;
E[tot].next = list[a];
list[a] = tot;
} void DFS(int s)
{
for(int k = list[s] ;k ;k = E[k].next)
{
int to = E[k].to;
if(mark[to]) ok = 1;
if(mk[to] || mk_cgq[to]) continue;
mk[to] = 1;
q.push(to);
DFS(to);
}
} int main ()
{
int n ,m ,l ,t ,a ,b ,i ,k;
scanf("%d" ,&t);
while(t--)
{
scanf("%d %d %d" ,&n ,&m ,&k);
for(i = 1 ;i <= k ;i ++)
scanf("%d" ,&a);
memset(list ,0 ,sizeof(list)) ,tot = 1;
for(i = 1 ;i <= m ;i ++)
{
scanf("%d %d" ,&a ,&b);
add(a ,b) ,add(b ,a);
}
scanf("%d" ,&l);
memset(mk_cgq ,0 ,sizeof(mk_cgq));
for(i = 1 ;i <= l ;i ++)
{
scanf("%d" ,&cgq[i]);
mk_cgq[cgq[i]] = 1;
}
if(l != k)
{
printf("No\n");
continue;
}
memset(mark ,0 ,sizeof(mark));
memset(mk ,0 ,sizeof(mk));
for(i = 1 ;i <= k ;i ++)
{
mk[cgq[i]] = 1;
ok = 0;
while(!q.empty())q.pop();
DFS(cgq[i]);
while(!q.empty())
{
mark[q.front()] = 1;
q.pop();
}
mark[cgq[i]] = 1;
if(!ok && i != 1) break;
}
if(i != k + 1)
{
printf("No\n");
continue;
}
for(i = 1 ;i <= n ;i ++)
if(!mark[i]) break;
if(i != n + 1) printf("No\n");
else printf("Yes\n");
}
return 0;
}


最新文章

  1. imx6 usb otg config 配置
  2. 锤子手机 Smartisan M1L 咖啡金 真皮背面 高配版 5.7
  3. javascript之数组操作
  4. ActionBar的使用
  5. JAVA Day2
  6. BZOJ 2342 回文串-Manacher
  7. bellman ford优先队列优化简介模板
  8. exit(-1)或者return(-1)为什么shell得到的退出码是255?
  9. MFC/VC++ UI界面美化技术
  10. Using HttpClient properly to avoid CLOSE_WAIT TCP connections
  11. fopen中的mode(20161115)
  12. DX9 DirectX 索引缓存(IndexBuffer) 代码
  13. 实力封装:Unity打包AssetBundle(大结局)
  14. [Oracle]Oracle 各产品的 生命周期
  15. A1080. Graduate Admission
  16. 修改 App.Config 配置文件 C#
  17. xgb 绘制
  18. 欢迎来怼--第二十二次Scrum会议
  19. vue 父组件传递数据给子组件
  20. [置顶] 【机器学习PAI实践十一】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码

热门文章

  1. 第十届蓝桥杯省赛-试题E: RSA 解密
  2. Prometheus + Spring Boot 应用监控
  3. linux安装uwsgi,报错问题解决
  4. Linux-mysql服务级别对DB的操作要领[导出-导入(执行SQL)]及修改数据库名称
  5. MyBatis(二):自定义持久层框架思路分析
  6. springboot注解之@Configuration 和 @Bean
  7. MySQL基础知识:MySQL Connection和Session
  8. Python-生成器
  9. python模块的打包和安装
  10. 攻防世界 maze NJUPT CTF 2017