結果
| 問題 |
No.90 品物の並び替え
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-21 11:10:34 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 343 ms / 5,000 ms |
| コード長 | 3,217 bytes |
| コンパイル時間 | 2,279 ms |
| コンパイル使用メモリ | 76,780 KB |
| 実行使用メモリ | 45,876 KB |
| 最終ジャッジ日時 | 2024-10-11 18:17:54 |
| 合計ジャッジ時間 | 4,263 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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 Integer[][] memo;
public static void main(String[] args) throws IOException {
proconScan proScan = new proconScan(" ");
proScan.scan();
Integer N = proScan.nextInteger();
Integer M = proScan.nextInteger();
Integer[][] costList = new Integer[N][N];
Integer[] ar = new Integer[N];
for (; M-- > 0;) {
proScan.scan();
costList[proScan.nextInteger()][proScan.nextInteger()] = proScan.nextInteger();
}
for (Integer integer = 0; integer < N; integer++) {
ar[integer] = integer;
}
Integer 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]] != null ? costList[ar[i]][ar[j]] : 0;
}
}
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(Integer[] array) {
Integer i = array.length - 1;
while (i > 0 && array[i - 1] >= array[i])
i--;
if (i <= 0)
return false;
Integer j = array.length - 1;
while (array[j] <= array[i - 1])
j--;
Integer 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;
}
}