結果
問題 | No.2319 Friends+ |
ユーザー | viral8 |
提出日時 | 2023-05-27 14:08:40 |
言語 | Java21 (openjdk 21) |
結果 |
TLE
|
実行時間 | - |
コード長 | 9,145 bytes |
コンパイル時間 | 3,182 ms |
コンパイル使用メモリ | 82,784 KB |
実行使用メモリ | 111,384 KB |
最終ジャッジ日時 | 2024-06-07 16:30:50 |
合計ジャッジ時間 | 18,788 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 51 ms
42,092 KB |
testcase_01 | AC | 51 ms
36,584 KB |
testcase_02 | AC | 605 ms
101,772 KB |
testcase_03 | AC | 777 ms
111,384 KB |
testcase_04 | AC | 625 ms
101,768 KB |
testcase_05 | AC | 641 ms
102,040 KB |
testcase_06 | AC | 640 ms
101,780 KB |
testcase_07 | AC | 820 ms
105,540 KB |
testcase_08 | AC | 802 ms
104,676 KB |
testcase_09 | AC | 842 ms
108,220 KB |
testcase_10 | AC | 855 ms
107,844 KB |
testcase_11 | AC | 785 ms
105,200 KB |
testcase_12 | AC | 56 ms
37,028 KB |
testcase_13 | AC | 55 ms
36,912 KB |
testcase_14 | AC | 57 ms
36,912 KB |
testcase_15 | AC | 56 ms
37,088 KB |
testcase_16 | AC | 57 ms
36,964 KB |
testcase_17 | AC | 52 ms
36,704 KB |
testcase_18 | TLE | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
testcase_33 | -- | - |
testcase_34 | -- | - |
testcase_35 | -- | - |
testcase_36 | -- | - |
testcase_37 | -- | - |
testcase_38 | -- | - |
testcase_39 | -- | - |
testcase_40 | -- | - |
testcase_41 | -- | - |
testcase_42 | -- | - |
testcase_43 | -- | - |
testcase_44 | -- | - |
testcase_45 | -- | - |
testcase_46 | -- | - |
ソースコード
import java.io.InputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.IOException; import java.math.BigInteger; import java.awt.Point; import java.util.*; public final class Main { private static final boolean autoFlush = false; private static final SimpleScanner sc = new SimpleScanner( System.in ); private static final SimplePrinter out = new SimplePrinter( System.out, autoFlush ); public static void main(String[] args){ int N = sc.nextInt(); int M = sc.nextInt(); int[] P = sc.nextInt(N); BitSet[] isFriend = new BitSet[N]; for(int i=0;i<N;i++) isFriend[i] = new BitSet(N); while(M-->0){ int A = sc.nextInt()-1; int B = sc.nextInt()-1; isFriend[A].set(B); isFriend[B].set(A); } int Q = sc.nextInt(); while(Q-->0){ int X = sc.nextInt()-1; int Y = sc.nextInt()-1; if(P[X]==P[Y]){ out.println("No"); continue; } boolean flag = false; int index = 0; while((index=isFriend[X].nextSetBit(index))!=-1){ if(P[index]==P[Y]){ P[X] = P[Y]; flag = true; break; } index++; } out.println(flag?"Yes":"No"); } out.close(); } } /* / ̄\ | | \_/ | /  ̄  ̄ \ / \ / \ / ⌒ ⌒ \ よくぞこの提出結果を開いてくれた | (__人__) | 褒美としてオプーナを買う権利をやる \ `⌒´ / ☆ /ヽ、--ー、__, -‐ ´ \─/ / > ヽ▼●▼<\ ||ー、. /ヽ、 \ i |。| |/ ヽ (ニ、`ヽ. l ヽ l |。| | r-、y `ニ ノ \ l | |ー─ |  ̄ l `~ヽ_ノ__ / ̄ ̄ ̄ ̄ヽ-'ヽ--' / オープナ /| | ̄ ̄ ̄ ̄ ̄ ̄|/| | ̄ ̄ ̄ ̄ ̄ ̄|/| ______ / ̄オプーナ/| ̄|__」/_オープナ /| ̄|__,」__ /| | ̄ ̄ ̄ ̄ ̄|/オープナ ̄/ ̄ ̄ ̄ ̄|/オプーナ /| / | | ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| / | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| */ /*//////////////////////////////////////////////// * My Library * @author viral *///////////////////////////////////////////////// // MyScanner final class SimpleScanner { final private int buff_size = 1 << 12; private final InputStream is; private final byte[] buff; private int point, length; public SimpleScanner ( InputStream is ) { this.is = is; buff = new byte[buff_size]; point = length = 0; } private void reload () { do { try { length = is.read( buff, point = 0, buff_size ); } catch ( IOException e ) { e.printStackTrace(); System.exit( 1 ); } } while ( length == -1 ); } private byte read () { if ( point == length ) { reload(); } return buff[point++]; } public byte nextByte () { byte c = read(); while ( c <= ' ' ) { c = read(); } return c; } public int nextInt () { int ans = 0; byte c = read(); while ( c <= ' ' ) { c = read(); } boolean negate = c == '-'; if ( c == '-' ) { c = read(); } while ( '0' <= c && c <= '9' ) { ans = ans * 10 + c - '0'; c = read(); } return negate ? -ans : ans; } public long nextLong () { long ans = 0; byte c = read(); while ( c <= ' ' ) { c = read(); } boolean negate = c == '-'; if ( c == '-' ) { c = read(); } while ( '0' <= c && c <= '9' ) { ans = ans * 10 + c - '0'; c = read(); } return negate ? -ans : ans; } public char nextChar () { byte c = read(); while ( c <= ' ' ) { c = read(); } return ( char )c; } public String next () { StringBuilder ans = new StringBuilder(); byte c = read(); while ( c <= ' ' ) { c = read(); } while ( c > ' ' ) { ans.append( ( char )c ); c = read(); } return ans.toString(); } public byte[] nextByte ( int n ) { byte[] ans = new byte[n]; for ( int i = 0; i < n; ++i ) { ans[i] = nextByte(); } return ans; } public int[] nextInt ( int n ) { int[] ans = new int[n]; for ( int i = 0; i < n; ++i ) { ans[i] = nextInt(); } return ans; } public long[] nextLong ( int n ) { long[] ans = new long[n]; for ( int i = 0; i < n; ++i ) { ans[i] = nextLong(); } return ans; } public String[] next ( int n ) { String[] ans = new String[n]; for ( int i = 0; i < n; ++i ) { ans[i] = next(); } return ans; } public byte[][] nextByte ( int n, int m ) { byte[][] ans = new byte[n][]; for ( int i = 0; i < n; ++i ) { ans[i] = nextByte( m ); } return ans; } public int[][] nextInt ( int n, int m ) { int[][] ans = new int[n][]; for ( int i = 0; i < n; ++i ) { ans[i] = nextInt( m ); } return ans; } public long[][] nextLong ( int n, int m ) { long[][] ans = new long[n][]; for ( int i = 0; i < n; ++i ) { ans[i] = nextLong( m ); } return ans; } public String[][] next ( int n, int m ) { String[][] ans = new String[n][]; for ( int i = 0; i < n; ++i ) { ans[i] = next( m ); } return ans; } public char[] nextCharArray () { return next().toCharArray(); } public char[][] nextCharArray ( int n ) { char[][] ans = new char[n][]; for ( int i = 0; i < n; ++i ) { ans[i] = nextCharArray(); } return ans; } public int[][] nextGraph ( int N, int M ) { if ( M == 0 ) { return new int[N + 1][0]; } int[][] ans = new int[N + 1][]; int[] count = new int[N + 1]; int[][] path = nextInt( M, 2 ); for ( int[] temp: path ) { ++count[temp[0]]; ++count[temp[1]]; } for ( int i = 1; i <= N; ++i ) { ans[i] = new int[count[i]]; } for ( int[] temp: path ) { ans[temp[0]][--count[temp[0]]] = temp[1]; ans[temp[1]][--count[temp[1]]] = temp[0]; } ans[0] = new int[0]; return ans; } public void close () { try { is.close(); } catch ( IOException e ) { e.printStackTrace(); System.exit( 1 ); } } } // MyPrinter final class SimplePrinter extends PrintWriter { public SimplePrinter ( PrintStream os ) { super( os ); } public SimplePrinter ( PrintStream os, boolean bool ) { super( os, bool ); } public void println ( int[] array ) { println( array, ' ' ); } public void println ( int[] array, String str ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( str ); print( array[i] ); } println(); } public void println ( int[] array, char c ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( c ); print( array[i] ); } println(); } public void println ( int[][] array ) { println( array, ' ' ); } public void println ( int[][] arrays, String str ) { for ( int[] array: arrays ) { println( array, str ); } } public void println ( int[][] arrays, char c ) { for ( int[] array: arrays ) { println( array, c ); } } public void println ( long[] array ) { println( array, ' ' ); } public void println ( long[] array, String str ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( str ); print( array[i] ); } println(); } public void println ( long[] array, char c ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( c ); print( array[i] ); } println(); } public void println ( long[][] array ) { println( array, ' ' ); } public void println ( long[][] arrays, String str ) { for ( long[] array: arrays ) { println( array, str ); } } public void println ( long[][] arrays, char c ) { for ( long[] array: arrays ) { println( array, c ); } } public void println ( char[] cs, String str ) { print( cs[0] ); for ( int i = 1; i < cs.length; ++i ) { print( str ); print( cs[i] ); } println(); } public void println ( char[] cs, char c ) { print( cs[0] ); for ( int i = 1; i < cs.length; ++i ) { print( c ); print( cs[i] ); } println(); } public void println ( char[][] cs ) { for ( char[] c: cs ) { println( c ); } } public void println ( char[][] cs, String str ) { print( cs[0] ); for ( int i = 1; i < cs.length; ++i ) { print( str ); print( cs[i] ); } println(); } public void println ( char[][] cs, char c ) { print( cs[0] ); for ( int i = 1; i < cs.length; ++i ) { print( c ); print( cs[i] ); } println(); } public <E> void println ( E[] array ) { println( array, ' ' ); } public <E> void println ( E[] array, String str ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( str ); print( array[i] ); } println(); } public <E> void println ( E[] array, char c ) { print( array[0] ); for ( int i = 1; i < array.length; ++i ) { print( c ); print( array[i] ); } println(); } public <E> void println ( E[][] arrays ) { println( arrays, ' ' ); } public <E> void println ( E[][] arrays, String str ) { for ( E[] array: arrays ) { println( array, str ); } } public <E> void println ( E[][] arrays, char c ) { for ( E[] array: arrays ) { println( array, c ); } } }