图论:有向图的完全联通

import javax.xml.transform.Result;
import java.util.*;

public class Main {

    //有向图的完全联通,采用邻接表存储图
    static Scanner in=new Scanner( System.in);
    static List<List<Integer>> graph=new ArrayList<>();
    static boolean[] visited;

    //
    public static void main(String[] args) {
            int n, k;
            n=in.nextInt();
            k=in.nextInt();
            visited=new boolean[n+1];

            //初始化图,由于题目要求从1开始,所以本题所有下标从1开始
            for (int i = 0; i < n+1; i++) {
                graph.add(new ArrayList<>());
            }
            for (int i = 1; i <1+ k; i++) {
                graph.get(in.nextInt()).add(in.nextInt());
            }

            dfs(1);

            //如果有节点没被遍历到,输出-1后返回,反之输出1
            for (int i=1;i<1+n;i++){
                if (!visited[i]){
                    System.out.println(-1);
                    return;
                }
            }
            System.out.println(1);

    }

    //把能连接到的节点都标记为访问
    static void dfs(int x){
        if (visited[x]){
            return;
        }
        visited[x]=true;
        List<Integer> list=graph.get(x);
        for (Integer next : list) {
            dfs(next);
        }
    }

    
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:02
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务