結果
問題 | No.2914 正閉路検出 |
ユーザー | dadas |
提出日時 | 2024-10-04 22:27:24 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,407 bytes |
コンパイル時間 | 2,255 ms |
コンパイル使用メモリ | 212,296 KB |
実行使用メモリ | 31,888 KB |
最終ジャッジ日時 | 2024-10-04 22:27:40 |
合計ジャッジ時間 | 12,409 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
8,992 KB |
testcase_01 | WA | - |
testcase_02 | AC | 4 ms
8,864 KB |
testcase_03 | AC | 4 ms
8,900 KB |
testcase_04 | WA | - |
testcase_05 | AC | 4 ms
8,900 KB |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | AC | 4 ms
8,900 KB |
testcase_10 | RE | - |
testcase_11 | RE | - |
testcase_12 | AC | 4 ms
8,904 KB |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | RE | - |
testcase_16 | WA | - |
testcase_17 | RE | - |
testcase_18 | WA | - |
testcase_19 | AC | 12 ms
10,524 KB |
testcase_20 | AC | 22 ms
13,084 KB |
testcase_21 | AC | 8 ms
9,668 KB |
testcase_22 | AC | 25 ms
13,604 KB |
testcase_23 | WA | - |
testcase_24 | RE | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | AC | 32 ms
15,388 KB |
testcase_28 | AC | 42 ms
17,476 KB |
testcase_29 | AC | 103 ms
22,340 KB |
testcase_30 | AC | 8 ms
9,628 KB |
testcase_31 | WA | - |
testcase_32 | WA | - |
testcase_33 | WA | - |
testcase_34 | WA | - |
testcase_35 | WA | - |
testcase_36 | WA | - |
testcase_37 | WA | - |
testcase_38 | AC | 68 ms
30,792 KB |
testcase_39 | WA | - |
testcase_40 | WA | - |
testcase_41 | WA | - |
testcase_42 | WA | - |
testcase_43 | WA | - |
testcase_44 | WA | - |
testcase_45 | WA | - |
testcase_46 | WA | - |
testcase_47 | WA | - |
testcase_48 | WA | - |
testcase_49 | WA | - |
testcase_50 | WA | - |
testcase_51 | AC | 38 ms
15,136 KB |
testcase_52 | WA | - |
testcase_53 | WA | - |
testcase_54 | WA | - |
コンパイルメッセージ
main.cpp: In function 'bool DFS2(ll, ll)': main.cpp:123:1: warning: control reaches end of non-void function [-Wreturn-type] 123 | } | ^
ソースコード
#include <bits/stdc++.h> // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; // #define ordered_set tree<int, null_type, less<int>, rb_tree_tag,tree_order_statistics_node_update> // #define ordered_multiset tree<int, null_type, less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> using namespace std; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); return 0; } using ll = long long; using ull = unsigned long long; using ld = long double; using vi = std::vector<int>; using vvi = std::vector<vi>; using vl = std::vector<ll>; using vii = std::vector<pair<int, int> >; using vvl = std::vector<vl>; using vll = std::vector<pair<ll , ll> >; using vd = std::vector<double>; using vvd = std::vector<vd>; using vs = std::vector<std::string>; using vvs = std::vector<vs>; using vb = std::vector<bool>; using vvb = std::vector<vb>; using vc = std::vector<char>; using vvc = std::vector<vc>; using pii = std::pair<int, int>; using pll = std::pair<ll, ll>; using piil = std::pair<pair<int, int>, ll>; using mii = std::map<int, int>; using mll = std::map<ll, ll>; using pql = std::priority_queue<ll>; using pqi = std::priority_queue<int>; using pqiil = std::priority_queue<pair<pair<int, int>, ll> >; using pqii = std::priority_queue<pair<int, int> >; #define pb push_back #define ps push #define eb emplace_back #define is insert #define er erase #define f first #define s second #define lb lower_bound #define ub upper_bound #define sf(i) sizeof(i) #define endl "\n" #define sz(v) ((int)(v).size()) #define all(v) (v).begin(), (v).end() #define rep(i, L, R) for(ll i = L;i<=R;i++) #define pcis precision template<typename T> struct infinity { static constexpr T max=std::numeric_limits<T>::max(); static constexpr T min=std::numeric_limits<T>::min(); static constexpr T value=std::numeric_limits<T>::max()/2; static constexpr T mvalue=std::numeric_limits<T>::min()/2; }; template<typename T>constexpr T INF=infinity<T>::value; constexpr ll lINF=INF<ll>; constexpr int iINF = INF<int>; constexpr ld PI = 3.1415926535897932384626; bool vst[100001]; vector<pair<ll, pll>> adj[100001]; ll A[100001]; ll at = -1; ll at2 = -1; ll at3 = 0; vll adj2[100001]; void DFS(ll node, ll atai) { vst[node] = true; A[node] = atai; if (at != -1)return; for (auto ss : adj[node]) { ll i = ss.f; auto[ cst, num] = ss.s; if (vst[i]) { if (A[i] != atai+cst) { if (at == -1) { if (atai+cst > A[i]) { at = node; at2 = i;// at -> at2임 at3 = num; return; } else { at = i; at2 = node;// at2 -> at임 at3 = num; return; } } } } else { adj2[node].pb({i, num}); adj2[i].pb({node, num}); DFS(i, cst+atai); } } return; } // at2에서 시작하면 됨 vl lst; bool DFS2(ll node, ll par) { if (node == at) { return true; } for (auto [i, num] : adj2[node]) { if (i==par)continue; if (DFS2(i, node)) { lst.pb(num); return true; } } } void _main() { ll N, M; cin >> N >> M; for (ll i = 1; i<=M; i++) { ll a, b, c; cin >>a >> b >> c; adj[a].pb({b,{c,i}}); adj[b].pb({a,{-c,i}}); } DFS(1, 0); if (at == -1) { cout << -1 << endl; return; } DFS2(at2, -1); lst.pb(at3); cout << lst.size() << endl; cout << at2 << endl; for (auto i : lst) { cout << i << " "; } cout << endl; }