Codeforces - 330B - Road Construction

发布于 2024-08-22 06:52:26 字数 1746 浏览 12 评论 0

题目大意

给你 nmn 代表 n 个顶点, m 代表的是 m 条边,下面 m 行每行两个数 tofrom ,代表不能将 tofrom 连接起来,问你最少需要连接多少对顶点,可以使得每个顶点到图中的任意一个顶点最多只需要两步,输出最少对数,以及连接的顶点,只需要输出任意一种方案。

解析

  • 首先要做到这个要求,一定需要连接 n-1 条边;
  • 知道了一定是 n-1 之后,只需要找出一个没有在输入数据中出现的顶点,然后从这个和每一个顶点都连接一条边即可;
import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {

    public static void main(String[] args){
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        int n = cin.nextInt(), m = cin.nextInt();
        boolean[] cant = new boolean[n+1]; // 1~n
        for(int i = 0; i < m; i++){
            int to = cin.nextInt();
            int from = cin.nextInt();
            cant[to] = true;
            cant[from] = true;
        }
        int conn = 0;
        for(int i = 1; i <= n; i++){
            if(!cant[i]){
                conn = i;
                break;
            }
        }
        System.out.println(n-1); 
        for(int i = 1; i <= n; i++){
            if(conn != i)
                System.out.println(conn + " " + i);
        }
    }
}

题目链接

https://codeforces.com/problemset/problem/330/B

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

她说她爱他

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文