图论:有向图的完全联通
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);
}
}
}
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);
}
}
}
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享