結果
問題 | No.479 頂点は要らない |
ユーザー |
|
提出日時 | 2017-01-27 23:04:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 159 ms / 1,500 ms |
コード長 | 960 bytes |
コンパイル時間 | 871 ms |
コンパイル使用メモリ | 90,956 KB |
実行使用メモリ | 17,664 KB |
最終ジャッジ日時 | 2024-12-23 16:47:15 |
合計ジャッジ時間 | 4,064 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
#include "iostream" #include "climits" #include "list" #include "queue" #include "set" #include "functional" #include "algorithm" #include "math.h" #include "utility" using namespace std; const long long int MOD = 1000000007; long long int N, M; int s, e; set<int>edge[100000]; bool flag[100000] = {}; int big=0; set<int>::iterator itr; int main() { cin >> N >> M; for (int i = 0; i < M; i++) { cin >> s >> e; edge[s].insert(e); edge[e].insert(s); } for (int i = N; i >= 0; i--) { if (!edge[i].empty()) { for (auto j = edge[i].begin(); j != edge[i].end(); ++j) { flag[*j] = true; while (!edge[*j].empty()) { itr = edge[*j].begin(); if(*itr!=i) edge[*itr].erase(*j); edge[*j].erase(*itr); } } edge[i].clear(); } } for (int i = N; i >= 0; i--) { if (flag[i]) { big = i; break; } } for (int i = big; i >= 0; i--) { if (flag[i])cout << "1"; else cout << "0"; } cout << endl; return 0; }