L2-025 分而治之(图的处理)

简介: L2-025 分而治之(图的处理)

描述:

分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。

输入:

输入在第一行给出两个正整数 N 和 M(均不超过10 000),分别为敌方城市个数(于是默认城市从 1 到 N 编号)和连接两城市的通路条数。随后 M 行,每行给出一条通路所连接的两个城市的编号,其间以一个空格分隔。在城市信息之后给出参谋部的系列方案,即一个正整数 K (≤ 100)和随后的 K 行方案,每行按以下格式给出:


Np v[1] v[2] ... v[Np]

1

其中 Np 是该方案中计划攻下的城市数量,后面的系列 v[i] 是计划攻下的城市编号。


输出:

对每一套方案,如果可行就输出YES,否则输出NO。


思路:

把图存储下来,对于每次询问把攻下的城市记录下来,然后根据记录去图中做判断即可

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const ll maxx = 1e18;
const int N = 1e5+100;
const int p = 1e4+10;
const double eps = 1e-8;
vector<int>ve[10001];//建图
int n,m;
int a,b;
int k,cnt,ms;
bool vis[p];
int judge()
{
  for(int i=1;i<=n;i++)
  {
    if(!vis[i])
    {
      int len=ve[i].size();
      for(int j=0;j<len;j++)
      {
        if(vis[ve[i][j]]!=1)
          return 0;
      } 
    }
  }//所有的非标记点中,出现相邻点非标记点,即非孤立
  return 1;
}
int main()
{
  cin>>n>>m;
  for(int i=1;i<=m;i++)
  {
    cin>>a>>b;
    ve[a].push_back(b);
    ve[b].push_back(a);
  }//建图
  cin>>k;
  while(k--)
  {
    memset(vis,0,sizeof(vis));//每一次把标记数组清空
    cin>>cnt;
    for(int i=1;i<=cnt;i++)
    {
      cin>>ms;
      vis[ms]=1;
    }//输入所有标记点
    if(judge()==1)  printf("YES\n");
    else printf("NO\n");
  }
}

目录
相关文章
|
算法 容器
图压实算法
## 一、定义 将一个原本较为稀疏的图布局,进行压实操作,从而提高画布空间利用率,便于用户理解。 ## 二、适用场景 1. 图面积最小化:即移除多余的空间,将稀疏图变为紧密图。 1. 布局编译:从符号布局生成蒙版布局,电路板。 1. 重新设计:自动清除违反设计规则的情况。 1. 重新缩放:将蒙版级别的布局从一种技术转换到另一种。 在实际场景中,通常用于电路板的排版中。
290 0
图压实算法
|
7月前
|
存储 算法 C++
c++算法学习笔记 (8) 树与图部分
c++算法学习笔记 (8) 树与图部分
|
7月前
|
机器学习/深度学习 存储 人工智能
图搜索算法详解
【5月更文挑战第11天】本文介绍了图搜索算法的基础知识,包括深度优先搜索(DFS)、广度优先搜索(BFS)和启发式搜索(如A*算法)。讨论了图搜索中的常见问题、易错点及避免方法,并提供了BFS和A*的Python代码示例。文章强调了正确标记节点、边界条件检查、测试与调试以及选择合适搜索策略的重要性。最后,提到了图搜索在路径规划、游戏AI和网络路由等领域的应用,并概述了性能优化策略。
125 3
|
7月前
|
存储 算法
图的深度优先算法
图的深度优先算法
42 0
|
算法 定位技术 调度
算法:贪婪算法、分而治之
算法:贪婪算法、分而治之
|
机器学习/深度学习
离散数学_十章-图 ( 4 ):图的表示和图的同构
离散数学_十章-图 ( 4 ):图的表示和图的同构
292 0
es 实现图的基本算法 图的深度优先搜索 广度优先搜索 普利姆算法
es 实现图的基本算法 图的深度优先搜索 广度优先搜索 普利姆算法
es 实现图的基本算法 图的深度优先搜索 广度优先搜索 普利姆算法
|
前端开发 算法 JavaScript
【戏玩算法】12-图
在上一篇文章中我们用了很大的篇幅来介绍红黑树,这篇文章我们来简单的学习一下图这个数据结构。
105 0
【戏玩算法】12-图
|
算法
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)
273 0
【数据结构和算法】图的应用(最小生产树、最短路径、拓扑排序、关键路径)
|
存储
【32. 图中的层次(图的广度优先遍历)】
思路 - 因为所有的`边长都为1`,所以可以使用`宽度优先搜索`的思想,每当队列pop出一个元素时,将其距离为1的节点都加到队列中(层次遍历思想) - `st[]`标记各个节点有没有走过,`d[]`保存1号节点到各个节点的距离,初始时都为-1。
147 0
【32. 图中的层次(图的广度优先遍历)】