結果
問題 | No.90 品物の並び替え |
ユーザー |
![]() |
提出日時 | 2018-09-22 11:54:31 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 156 ms / 5,000 ms |
コード長 | 4,849 bytes |
コンパイル時間 | 2,875 ms |
コンパイル使用メモリ | 79,024 KB |
実行使用メモリ | 53,124 KB |
最終ジャッジ日時 | 2024-07-18 08:54:48 |
合計ジャッジ時間 | 3,844 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 9 |
ソースコード
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.util.Arrays;import java.util.InputMismatchException;import java.util.StringTokenizer;public class Main {public static void main(String[] args) throws IOException {InputStream inputStream = System.in;OutputStream outputStream = System.out;InputReader in = new InputReader(inputStream);PrintWriter out = new PrintWriter(outputStream);TaskX solver = new TaskX();solver.solve(1, in, out);out.close();}static int INF = 1 << 30;static long LINF = 1L << 55;static int MOD = 1000000007;static int[] mh4 = { 0, -1, 1, 0 };static int[] mw4 = { -1, 0, 0, 1 };static int[] mh8 = { -1, -1, -1, 0, 0, 1, 1, 1 };static int[] mw8 = { -1, 0, 1, -1, 1, -1, 0, 1 };@SuppressWarnings("unchecked")static class TaskX {public void solve(int testNumber, InputReader in, PrintWriter out) {int n = in.nextInt(), m = in.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = i;}long[][] mat = new long[n][n];fill(mat, 0);for (int i = 0; i < m; i++) {int f = in.nextInt();int t = in.nextInt();int c = in.nextInt();mat[f][t] = c;}long ans = 0;do {long tmp = 0;for (int i = 0; i < n-1; i++) {for (int j = i+1; j < n; j++) {tmp += mat[a[i]][a[j]];}}ans = Math.max(ans, tmp);} while (Permutation.next(a));out.println(ans);}}static void fill(long[][] mat, long v) {for (int i = 0; i < mat.length; i++) {Arrays.fill(mat[i], v);}}static class P {int t, c;public P(int t, int c) {super();this.t = t;this.c = c;}}/*** 順列(N!)** @input {0 ~ n-1}の数が入った配列 ※配列は sort 済であること!!* @output 順列に並びられた1回分の配列 a[]* 配列 a[] の中の値が順列される。(次の順列になる)** @sample* while(Permutation.next(a)) {* array[a[i]][a[i+1]]* }** */static class Permutation {// array verpublic static boolean next(int[] a) {int n = a.length;int i = n - 1;while (i > 0 && a[i - 1] >= a[i])i--;if (i <= 0)return false;int j = n - 1;while (a[j] <= a[i - 1])j--;swap(a, i - 1, j);int k = n - 1;while (i < k)swap(a, i++, k--);return true;}private static void swap(int[] a, int i, int j) {int tmp = a[i];a[i] = a[j];a[j] = tmp;}// strings verpublic static boolean next(char[] a) {int n = a.length;int i = n - 1;while (i > 0 && a[i - 1] >= a[i])i--;if (i <= 0)return false;int j = n - 1;while (a[j] <= a[i - 1])j--;swap(a, i - 1, j);int k = n - 1;while (i < k)swap(a, i++, k--);return true;}private static void swap(char[] a, int i, int j) {char tmp = a[i];a[i] = a[j];a[j] = tmp;}}static class InputReader {BufferedReader in;StringTokenizer tok;public String nextString() {while (!tok.hasMoreTokens()) {try {tok = new StringTokenizer(in.readLine(), " ");} catch (IOException e) {throw new InputMismatchException();}}return tok.nextToken();}public int nextInt() {return Integer.parseInt(nextString());}public long nextLong() {return Long.parseLong(nextString());}public double nextDouble() {return Double.parseDouble(nextString());}public int[] nextIntArray(int n) {int[] res = new int[n];for (int i = 0; i < n; i++) {res[i] = nextInt();}return res;}public int[] nextIntArrayDec(int n) {int[] res = new int[n];for (int i = 0; i < n; i++) {res[i] = nextInt() - 1;}return res;}public int[] nextIntArray1Index(int n) {int[] res = new int[n + 1];for (int i = 0; i < n; i++) {res[i + 1] = nextInt();}return res;}public long[] nextLongArray(int n) {long[] res = new long[n];for (int i = 0; i < n; i++) {res[i] = nextLong();}return res;}public long[] nextLongArrayDec(int n) {long[] res = new long[n];for (int i = 0; i < n; i++) {res[i] = nextLong() - 1;}return res;}public long[] nextLongArray1Index(int n) {long[] res = new long[n + 1];for (int i = 0; i < n; i++) {res[i + 1] = nextLong();}return res;}public double[] nextDoubleArray(int n) {double[] res = new double[n];for (int i = 0; i < n; i++) {res[i] = nextDouble();}return res;}public InputReader(InputStream inputStream) {in = new BufferedReader(new InputStreamReader(inputStream));tok = new StringTokenizer("");}}}