結果
問題 | 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;}