結果
| 問題 |
No.90 品物の並び替え
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-21 11:17:17 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 157 ms / 5,000 ms |
| コード長 | 3,129 bytes |
| コンパイル時間 | 2,131 ms |
| コンパイル使用メモリ | 76,580 KB |
| 実行使用メモリ | 39,672 KB |
| 最終ジャッジ日時 | 2024-10-11 18:17:58 |
| 合計ジャッジ時間 | 3,486 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 9 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static boolean[][] done;
public static int[][] memo;
public static void main(String[] args) throws IOException {
proconScan proScan = new proconScan(" ");
proScan.scan();
int N = proScan.nextInteger();
int M = proScan.nextInteger();
int[][] costList = new int[N][N];
int[] ar = new int[N];
for (; M-- > 0;) {
proScan.scan();
costList[proScan.nextInteger()][proScan.nextInteger()] = proScan.nextInteger();
}
for (int integer = 0; integer < N; integer++) {
ar[integer] = integer;
}
int ans = 0, i, j, temp;
do {
for (i = 0, temp = 0; i < N; i++) {
for (j = i + 1; j < N; j++) {
temp += costList[ar[i]][ar[j]];
}
}
ans = Math.max(ans, temp);
} while (proconScan.nextPermutation(ar));
System.out.print(ans);
proScan.proconEnd();
}
}
class proconScan {
private BufferedReader br;
private String inLine;
private String[] inString;
private Integer idx;
private String splitChar;
public proconScan() {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = " ";
}
public proconScan(String split) {
br = new BufferedReader(new InputStreamReader(System.in));
idx = 0;
splitChar = split;
}
public void proconEnd() throws IOException {
// TODO 自動生成されたメソッド・スタブ
br.close();
}
public String scan() throws IOException {
idx = 0;
inLine = br.readLine();
inString = inLine.split(splitChar, 0);
return inLine;
}
public Integer scanInteger1() throws IOException {
scan();
return Integer.parseInt(inString[0]);
}
public String backLine() {
return inLine;
}
public String nextString() {
return inString[idx++];
}
public String[] getString() {
return inString;
}
public Integer nextInteger() {
Integer num;
try {
num = Integer.parseInt(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Integer[] getInteger() {
Integer[] num = new Integer[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Integer.parseInt(inString[i]);
}
return num;
}
public Float nextFloat() {
Float num;
try {
num = Float.parseFloat(inString[idx++]);
} catch (NumberFormatException e) {
num = null;// TODO: handle exception
}
return num;
}
public Float[] getFloat() {
Float[] num = new Float[this.getLen()];
for (int i = 0; i < this.getLen(); i++) {
num[i] = Float.parseFloat(inString[i]);
}
return num;
}
public Integer getLen() {
return inString.length;
}
public static boolean nextPermutation(int[] array) {
int i = array.length - 1;
while (i > 0 && array[i - 1] >= array[i])
i--;
if (i <= 0)
return false;
int j = array.length - 1;
while (array[j] <= array[i - 1])
j--;
int temp = array[i - 1];
array[i - 1] = array[j];
array[j] = temp;
j = array.length - 1;
while (i < j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
return true;
}
}