• L2-025 分而治之 - java


    L2-025 分而治之


    时间限制
    600 ms
    内存限制
    64 MB


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

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

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

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


    给定一个无向图,再给你k组进攻路线,判断这k组进攻路线是否可行


    emmmmmmm

    暴力判断即可

    首先如何判断当前城市是否孤立无援呢
    也就是当前城市没被攻击,且相邻城市都被攻击了,这样子该城市就是孤立无援的城市

    最后就是用无向图存储,for循环暴力去判断当前方案是否可行即可


    import java.io.*;
    import java.math.*;
    import java.util.*;
    
    public class Main
    {
    
    	static int N = (int) 1e4;
    	static ArrayList<Integer> map[] = new ArrayList[N + 10]; // 存储城市
    	static boolean vis[] = new boolean[N + 10]; // 标记当前城市是否被攻击
    	static int n, m;
    
    	static boolean check()
    	{
    		for (int i = 1; i <= n; i++)
    		{
    			for (int j = 0; j < map[i].size(); j++)
    			{
    //				当前城市没有被攻击且相邻国家也没有被攻击
    				if (!vis[i] && !vis[map[i].get(j)])
    					return false;
    			}
    		}
    		return true;
    	}
    
    	public static void main(String[] args) throws IOException
    	{
    		n = ini();
    		m = ini();
    		for (int i = 1; i <= n; i++)
    			map[i] = new ArrayList<Integer>();
    
    		while (m-- > 0)
    		{
    			int a = ini(), b = ini();
    			map[a].add(b);
    			map[b].add(a);
    		}
    
    		int k = ini();
    		while (k-- > 0)
    		{
    			int np = ini();
    			vis = new boolean[n + 10];
    			while (np-- > 0)
    			{
    				int v = ini();
    				vis[v] = true; // 当前城市被攻打了
    			}
    			out.println(check() ? "YES" : "NO");
    		}
    
    		out.flush();
    		out.close();
    
    	}
    
    	static StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    	static PrintWriter out = new PrintWriter(System.out);
    
    	static int ini() throws IOException
    	{
    		sc.nextToken();
    		return (int) sc.nval;
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    ArrayList
    ArrayList


    如果有说错的 或者 不懂的 尽管提 嘻嘻

    一起进步!!!


    闪现

  • 相关阅读:
    npm 包的命名空间介绍,以及@typescript-eslint/typescript-eslint
    请求分页内存管理模式
    京东数据接口:京东数据分析怎么做?
    安卓四大组件:ContentProvider
    Oracle DBlink使用方法
    【Go基础】编译、变量、常量、基本数据类型、字符串
    Java面试题-Redis-第三天(缓存更新策略-由旁路缓存策略衍生出的一系列问题)
    (高阶) Redis 7 第18讲 RedLock 分布式锁
    字符串数字出现的新功能
    2-1线性表-顺序表
  • 原文地址:https://blog.csdn.net/weixin_52136008/article/details/133826539