图---应用实例

来源:互联网 发布:java的工作内容是什么 编辑:程序博客网 时间:2024/06/05 11:52

1、广度优先遍历

这里写图片描述

思路:
https://www.nowcoder.com/questionTerminal/5ee8df898312465a95553d82ad8898c3

代码:

import java.util.HashMap;import java.util.LinkedList;import java.util.Map;import java.util.Queue;import java.util.Scanner;public class Solution {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            long x_0 = sc.nextLong();            //存储已经访问过的点            Map<Long, Integer> map = new HashMap<Long, Integer>();            //BFS(广度优先搜索)            Queue<Long> queue = new LinkedList<Long>();            map.put(x_0, 1);            queue.offer(x_0);            int result = -1;            while(!queue.isEmpty()){                Long value = queue.poll();                if(value==0 && map.get(value)<=100001){                    result = map.get(value) - 1;                    break;                }                if(map.get(value)>100001){                    continue;                }                Long temp = (4*value+3)%1000000007;                if(!map.containsKey(temp)){                    map.put(temp, map.get(value)+1);                    queue.offer(temp);                }                temp = (8*value+7)%1000000007;                if(!map.containsKey(temp)){                    map.put(temp, map.get(value)+1);                    queue.offer(temp);                }            }            System.out.println(result);             }    }}