結果
問題 |
No.2914 正閉路検出
|
ユーザー |
|
提出日時 | 2024-10-04 22:27:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,407 bytes |
コンパイル時間 | 2,199 ms |
コンパイル使用メモリ | 202,340 KB |
最終ジャッジ日時 | 2025-02-24 15:26:12 |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 WA * 10 RE * 1 MLE * 1 -- * 37 |
コンパイルメッセージ
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; }