也会有发光的一天吖


私信TA

用户名:wzi

访问量:7894

签 名:

我怎么能这么笨啊,脑袋长的干嘛的?

等  级
排  名 109
经  验 7819
参赛次数 0
文章发表 37
年  龄 88
在职情况 学生
学  校 蓝翔技校
专  业

  自我简介:

1.素质教育漏网之鱼 2.晚睡协会常任理事3.情侣辩论赛冠军 4. 国家级抬杠运动员6.中国驰名窝里横 7.家里蹲大学博士

解题思路:

注意事项:

参考代码:

package Year_2017;


import java.util.ArrayList;

import java.util.Collection;

import java.util.Collections;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;


public class 发现环 {

private static int index = 0;

private static int[] arr,visited;

private static Map<Integer,ArrayList<Integer>> map = new HashMap<Integer,ArrayList<Integer>>();

private static ArrayList<Integer> res = new ArrayList<>();

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

while(sc.hasNext()) {

int n = sc.nextInt();

arr = new int [n+1];

visited  = new int [n+1];

for(int i=1;i<=n;i++) {

//给结点编一个默认号

arr[i] = i;

}

for(int i=1;i<=n;i++) {

int u_head = sc.nextInt();

int v_tail = sc.nextInt();

if(map.get(u_head) == null) {

ArrayList<Integer> list = new ArrayList<Integer>();

list.add(v_tail);

map.put(u_head, list);

}else { //如果u_head不为空

ArrayList<Integer> list = map.get(u_head);

list.add(v_tail);

map.put(u_head, list);

}

//================================================================

if(map.get(v_tail) == null) {

ArrayList<Integer> list = new ArrayList<Integer>();

list.add(u_head);

map.put(v_tail, list);

}else { //如果u_head不为空

ArrayList<Integer> list = map.get(v_tail);

list.add(u_head);

map.put(v_tail, list);

}

//================================================================

//构造一个find,查看当前的值,有没有出现过

int x = find(u_head) ,y = find(v_tail);

if(x != y) {

arr[x] = y;

}else {

index = u_head;

dfs(u_head);

}

}//for(int i=1;i<=n;i++) 

Collections.sort(res);

for(int i=0;i<res.size();i++) {

System.out.print(res.get(i));

if(i<res.size()-1) {

System.out.print(" ");

}else {

System.out.println();

}

}

}

sc.close();

}


private static boolean dfs(int x) {

// TODO Auto-generated method stub

if(visited[x] == 1) {

if(x==index) {

return true;

}

return false;

}

visited[x] = 1;

for(int i=0;i<map.get(x).size();i++) {

int v = map.get(x).get(i);

if(dfs(v)) {

res.add(v);

return true;

}

}

return false;

}


private static int find(int x) {

// TODO Auto-generated method stub

if(x == arr[x]) {

return x;

}else {

arr[x] = find(arr[x]);

return arr[x];

}

}

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区