結果
| 問題 | No.1473 おでぶなおばけさん |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-27 23:37:22 |
| 言語 | Java (openjdk 25.0.2) |
| 結果 |
AC
|
| 実行時間 | 648 ms / 2,000 ms |
| コード長 | 2,590 bytes |
| 記録 | |
| コンパイル時間 | 3,632 ms |
| コンパイル使用メモリ | 86,192 KB |
| 実行使用メモリ | 72,088 KB |
| 最終ジャッジ日時 | 2026-06-27 23:37:55 |
| 合計ジャッジ時間 | 30,507 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 47 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Queue;
public class No1473 {
public static int n;
public static ArrayList<tdMap>[] tdLists;
public static void main(String[] args) throws IOException {
String[] readStrings = readStr();
n = Integer.parseInt(readStrings[0].split(" ")[0]);
int m = Integer.parseInt(readStrings[0].split(" ")[1]);
tdLists = new ArrayList[m+1];
int[] dlist = new int[m];
int s , t , d;
for(int i = 1;i <= m;i++) {
s = Integer.parseInt(readStrings[i].split(" ")[0]);
t = Integer.parseInt(readStrings[i].split(" ")[1]);
d = Integer.parseInt(readStrings[i].split(" ")[2]);
if(tdLists[s] == null) {
tdLists[s] = new ArrayList<tdMap>();
}
if(tdLists[t] == null ) {
tdLists[t] = new ArrayList<tdMap>();
}
tdLists[s].add(new tdMap(t, d));
tdLists[t].add(new tdMap(s, d));
dlist[i-1] = d;
}
Arrays.sort(dlist);
int a = 0 , b = dlist.length-1 , h = (a+b)/2 , ans = 0;
while(true) {
ans = rootcount(dlist[h]);
if(ans == 0) {
dlist[h] = 0;
b = h-1;
h = (a+b)/2;
}else {
if(h + 1 == m || dlist[h+1] == 0) {
break;
}else {
a = h+1;
h = (a+b)/2;
}
}
}
System.out.println(dlist[h] + " " + rootcount(dlist[h]));
}
public static int rootcount(int w) {
int[] root = new int[n+1];
Queue<Integer> queue = new ArrayDeque<Integer>();
ArrayList<tdMap> arrayList;
queue.add(1);
int s = 0;
while(!queue.isEmpty()) {
s = queue.poll();
arrayList = tdLists[s];
if(arrayList == null) {
System.out.println("Empty");
continue;
}
for (tdMap tdMap : arrayList) {
if(w <= tdMap.getd() && (root[tdMap.gett()] == 0 || root[tdMap.gett()] > root[s]+1)) {
root[tdMap.gett()] = root[s] + 1;
queue.add(tdMap.gett());
}
}
}
return root[n];
}
public static String[] readStr() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
do {
list.add(br.readLine());
}while(br.ready());
br.close();
String[] text = new String[list.size()];
list.toArray(text);
return text;
}
public static class tdMap{
int t , d;
public tdMap(int t , int d) {
this.t = t;
this.d = d;
}
public int getd() {
return this.d;
}
public int gett() {
return this.t;
}
}
}