就是一个基本的dfs。可关键问题是c/c++/g++光输入就超时了。还是写java过的,毕竟时限4s。都放弃希望了,没想到还真过了。
1 import java.lang.*; 2 import java.io.*; 3 import java.util.*; 4 5 6 public class Main { 7 8 public static void main(String[] args) throws java.lang.Exception { 9 InputStream inputStream = System.in; 10 OutputStream outputStream = System.out; 11 InputReader in = new InputReader(inputStream); 12 PrintWriter out = new PrintWriter(outputStream); 13 TaskA solver = new TaskA(); 14 solver.solve(in, out); 15 out.close(); 16 } 17 } 18 19 class TaskA { 20 public final static int maxv = (int)(5e5+5); 21 public final static int INF = 0x3f3f3f3f; 22 int[] V = new int[maxv]; 23 int[] W = new int[maxv]; 24 int[] nxt = new int[maxv]; 25 int[] head = new int[maxv]; 26 int m, n, L, R; 27 28 void init() { 29 m = 0; 30 Arrays.fill(head, -1); 31 } 32 33 void addEdge(int u, int v, int w) { 34 V[m] = v; 35 W[m] = w; 36 nxt[m] = head[u]; 37 head[u] = m++; 38 } 39 40 public void solve(InputReader in, PrintWriter out) { 41 int i; 42 int u, v, w; 43 int ans; 44 45 while (true) { 46 try { 47 n = in.nextInt(); 48 } catch (RuntimeException e) { 49 break; 50 } 51 L = in.nextInt(); 52 R = in.nextInt(); 53 init(); 54 for (i=1; i=L-len && tmp<=R-len) { 82 if (now == 0) { 83 if (ans==-1 || tmp>ans) 84 ans = tmp; 85 } else { 86 if (ans==-1 || tmp