結果
| 問題 | No.3756 Udon Network |
| ユーザー |
チャラ
|
| 提出日時 | 2026-10-13 15:21:31 |
| 言語 | Java (openjdk 27 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 12,198 bytes |
| 記録 | |
| コンパイル時間 | 3,215 ms |
| コンパイル使用メモリ | 114,352 KB |
| 実行使用メモリ | 144,956 KB |
| 最終ジャッジ日時 | 2026-10-13 15:22:26 |
| 合計ジャッジ時間 | 52,409 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| Example | 0 % | AC * 1 WA * 7 |
| Subtask $1$ | 2 % | AC * 2 WA * 13 |
| Subtask $2$ | 4 % | AC * 2 WA * 20 |
| Subtask $3$ | 8 % | AC * 2 WA * 7 |
| Subtask $4$ | 16 % | AC * 10 |
| Subtask $5$ | 32 % | AC * 2 WA * 8 |
| Subtask $6$ | 38 % | AC * 10 WA * 43 |
| 合計 | 4 * 16% = 64 点 |
ソースコード
import com.sun.source.tree.Tree;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;
import java.util.function.IntUnaryOperator;
import java.util.function.LongUnaryOperator;
import java.util.stream.Collectors;
public class Main {
static In in = new FastIn();
static Out out = new Out(false);
static final long inf = 0x1fffffffffffffffL;
static final int iinf = 0x3fffffff;
static final double eps = 1e-9;
static long mod = 998244353;
int n = in.nextInt();
int m = in.nextInt();
int qq = in.nextInt();
int[] a = in.nextIntArray(n);
E[] b = new E[m];
List<List<E>> e1 = new ArrayList<>();
List<List<E>> e2 = new ArrayList<>();
void solve() {
for (int i = 0; i < n; i++) {
e1.add(new ArrayList<>());
e2.add(new ArrayList<>());
}
E[] es = new E[m];
for (int i = 0; i < m; i++) {
es[i] = new E(-1,-1,inf);
}
for (int i = 0; i < m; i++) {
int u = in.nextInt()-1;
int v = in.nextInt()-1;
long w = in.nextLong();
b[i] = new E(u,v,w);
if(a[u] != a[v]){
e1.get(u).add(new E(u,v,w));
e1.get(v).add(new E(v,u,w));
es[i] = new E(u,v,w);
}else{
e2.get(u).add(new E(u,v,w));
e2.get(v).add(new E(v,u,w));
}
}
long[] c = new long[n];
Arrays.sort(es, Comparator.comparingLong(a -> a.w));
PriorityQueue<E> q = new PriorityQueue<>(Comparator.comparingLong(a -> a.w));
Arrays.fill(c,inf);
for (int i = 0; i < m; i++) {
if(es[i].w == inf) {
break;
}
int u = es[i].u;
int v = es[i].v;
c[u] = Math.min(c[u],es[i].w);
c[v] = Math.min(c[v],es[i].w);
q.add(new E(u,u,c[u]));
q.add(new E(v,v,c[v]));
}
while(!q.isEmpty()){
E ee = q.poll();
int num = ee.u;
long ww = c[num];
for (E ei : e2.get(num)) {
int i = ei.v;
if(Math.max(ww,ei.w) < c[i]){
c[i] = Math.max(ww,ei.w);
q.add(new E(i,i,c[i]));
}
}
}
while(qq --> 0){
int ss = in.nextInt();
int cc = in.nextInt();
if(cc == 2) {
out.println(c[ss-1] == inf ? -1 : c[ss-1]);
}else{
out.println(0);
}
}
}
public static void main(String... args) {
new Main().solve();
out.flush();
}
}
class E{
public int u;
public int v;
public long w;
public E(int u,int v,long w){
this.u = u;
this.v = v;
this.w = w;
}
}
class FastIn extends In {
private final BufferedInputStream reader = new BufferedInputStream(System.in);
private final byte[] buffer = new byte[0x10000];
private int i = 0;
private int length = 0;
public int read() {
if (i == length) {
i = 0;
try {
length = reader.read(buffer);
} catch (IOException ignored) {
}
if (length == -1) {
return 0;
}
}
if (length <= i) {
throw new RuntimeException();
}
return buffer[i++];
}
String next() {
StringBuilder builder = new StringBuilder();
int b = read();
while (b < '!' || '~' < b) {
b = read();
}
while ('!' <= b && b <= '~') {
builder.appendCodePoint(b);
b = read();
}
return builder.toString();
}
String nextLine() {
StringBuilder builder = new StringBuilder();
int b = read();
while (b != 0 && b != '\r' && b != '\n') {
builder.appendCodePoint(b);
b = read();
}
if (b == '\r') {
read();
}
return builder.toString();
}
int nextInt() {
long val = nextLong();
if ((int) val != val) {
throw new NumberFormatException();
}
return (int) val;
}
long nextLong() {
int b = read();
while (b < '!' || '~' < b) {
b = read();
}
boolean neg = false;
if (b == '-') {
neg = true;
b = read();
}
long n = 0;
int c = 0;
while ('0' <= b && b <= '9') {
n = n * 10 + b - '0';
b = read();
c++;
}
if (c == 0 || c >= 2 && n == 0) {
throw new NumberFormatException();
}
return neg ? -n : n;
}
}
class In {
private final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in), 0x10000);
private StringTokenizer tokenizer;
String next() {
try {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(reader.readLine());
}
} catch (IOException ignored) {
}
return tokenizer.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
char[] nextCharArray() {
return next().toCharArray();
}
String[] nextStringArray(int n) {
String[] s = new String[n];
for (int i = 0; i < n; i++) {
s[i] = next();
}
return s;
}
char[][] nextCharGrid(int n, int m) {
char[][] a = new char[n][m];
for (int i = 0; i < n; i++) {
a[i] = next().toCharArray();
}
return a;
}
int[] nextIntArray(int n) {
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = nextInt();
}
return a;
}
int[] nextIntArray(int n, IntUnaryOperator op) {
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = op.applyAsInt(nextInt());
}
return a;
}
int[][] nextIntMatrix(int h, int w) {
int[][] a = new int[h][w];
for (int i = 0; i < h; i++) {
a[i] = nextIntArray(w);
}
return a;
}
long[] nextLongArray(int n) {
long[] a = new long[n];
for (int i = 0; i < n; i++) {
a[i] = nextLong();
}
return a;
}
long[] nextLongArray(int n, LongUnaryOperator op) {
long[] a = new long[n];
for (int i = 0; i < n; i++) {
a[i] = op.applyAsLong(nextLong());
}
return a;
}
long[][] nextLongMatrix(int h, int w) {
long[][] a = new long[h][w];
for (int i = 0; i < h; i++) {
a[i] = nextLongArray(w);
}
return a;
}
List<List<Integer>> nextEdges(int n, int m, boolean directed) {
List<List<Integer>> res = new ArrayList<>();
for (int i = 0; i < n; i++) {
res.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
int u = nextInt() - 1;
int v = nextInt() - 1;
res.get(u).add(v);
if (!directed) {
res.get(v).add(u);
}
}
return res;
}
}
class Out {
private final PrintWriter out = new PrintWriter(System.out);
private final PrintWriter err = new PrintWriter(System.err);
boolean autoFlush = false;
boolean enableDebug;
Out(boolean enableDebug) {
this.enableDebug = enableDebug;
}
void println(Object... args) {
if (args == null || args.getClass() != Object[].class) {
args = new Object[]{args};
}
out.println(Arrays.stream(args).map(obj -> {
Class<?> clazz = obj == null ? null : obj.getClass();
return clazz == Double.class ? String.format("%.10f", obj) :
clazz == byte[].class ? Arrays.toString((byte[]) obj) :
clazz == short[].class ? Arrays.toString((short[]) obj) :
clazz == int[].class ? Arrays.toString((int[]) obj) :
clazz == long[].class ? Arrays.toString((long[]) obj) :
clazz == char[].class ? Arrays.toString((char[]) obj) :
clazz == float[].class ? Arrays.toString((float[]) obj) :
clazz == double[].class ? Arrays.toString((double[]) obj) :
clazz == boolean[].class ? Arrays.toString((boolean[]) obj) :
obj instanceof Object[] ? Arrays.deepToString((Object[]) obj) :
String.valueOf(obj);
}).collect(Collectors.joining(" ")));
if (autoFlush) {
out.flush();
}
}
void debug(Object... args) {
if (!enableDebug) {
return;
}
if (args == null || args.getClass() != Object[].class) {
args = new Object[]{args};
}
err.println(Arrays.stream(args).map(obj -> {
Class<?> clazz = obj == null ? null : obj.getClass();
return clazz == Double.class ? String.format("%.10f", obj) :
clazz == byte[].class ? Arrays.toString((byte[]) obj) :
clazz == short[].class ? Arrays.toString((short[]) obj) :
clazz == int[].class ? Arrays.toString((int[]) obj) :
clazz == long[].class ? Arrays.toString((long[]) obj) :
clazz == char[].class ? Arrays.toString((char[]) obj) :
clazz == float[].class ? Arrays.toString((float[]) obj) :
clazz == double[].class ? Arrays.toString((double[]) obj) :
clazz == boolean[].class ? Arrays.toString((boolean[]) obj) :
obj instanceof Object[] ? Arrays.deepToString((Object[]) obj) :
String.valueOf(obj);
}).collect(Collectors.joining(" ")));
err.flush();
}
void println(int a) {
out.println(a);
if (autoFlush) {
out.flush();
}
}
void println(long a) {
out.println(a);
if (autoFlush) {
out.flush();
}
}
void println(double a) {
out.println(String.format("%.10f", a));
if (autoFlush) {
out.flush();
}
}
void println(String s) {
out.println(s);
if (autoFlush) {
out.flush();
}
}
void println(char[] s) {
out.println(String.valueOf(s));
if (autoFlush) {
out.flush();
}
}
void println(int[] a) {
StringJoiner joiner = new StringJoiner(" ");
for (int i : a) {
joiner.add(Integer.toString(i));
}
out.println(joiner);
if (autoFlush) {
out.flush();
}
}
void println(long[] a) {
StringJoiner joiner = new StringJoiner(" ");
for (long i : a) {
joiner.add(Long.toString(i));
}
out.println(joiner);
if (autoFlush) {
out.flush();
}
}
void flush() {
err.flush();
out.flush();
}
}
チャラ