結果
| 問題 |
No.479 頂点は要らない
|
| ユーザー |
izuru_matsuura
|
| 提出日時 | 2017-04-11 18:07:20 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 95 ms / 1,500 ms |
| コード長 | 1,432 bytes |
| コンパイル時間 | 1,523 ms |
| コンパイル使用メモリ | 146,376 KB |
| 実行使用メモリ | 7,128 KB |
| 最終ジャッジ日時 | 2024-06-12 18:38:46 |
| 合計ジャッジ時間 | 4,349 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 38 |
ソースコード
import std.algorithm;
import std.array;
import std.ascii;
import std.container;
import std.conv;
import std.math;
import std.numeric;
import std.range;
import std.stdio;
import std.string;
import std.typecons;
void log(A...)(A arg) { stderr.writeln(arg); }
int size(T)(in T s) { return cast(int)s.length; }
void main() {
int N, M; readf("%d %d\n", &N, &M);
auto G = new int[][N];
int R = M; // remainings;
foreach (int i; 0 .. M) {
int a, b; readf("%d %d\n", &a, &b);
G[a] ~= i;
G[b] ~= i;
}
auto count = new int[M];
auto ans = new bool[N]; ans[] = true;
foreach (int i; 0 .. N) {
foreach (edgeid; G[i]) {
count[edgeid]++;
}
}
foreach_reverse (int i; 0 .. N) {
foreach (edgeid; G[i]) {
count[edgeid]--;
}
bool C() {
foreach (edgeid; G[i]) {
if (count[edgeid] <= 0) {
return false;
}
}
return true;
}
if (C()) {
ans[i] = false;
} else {
foreach (edgeid; G[i]) {
count[edgeid]++;
}
}
}
ans.reverse;
bool first = true;
foreach (x; ans) {
if (x == false) {
if (first) continue;
write(0);
} else {
first = false;
write(1);
}
}
writeln();
}
izuru_matsuura