結果
問題 | No.1612 I hate Construct a Palindrome |
ユーザー |
![]() |
提出日時 | 2024-08-09 17:40:10 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,892 bytes |
コンパイル時間 | 1,438 ms |
コンパイル使用メモリ | 118,716 KB |
実行使用メモリ | 23,716 KB |
最終ジャッジ日時 | 2024-08-09 17:40:20 |
合計ジャッジ時間 | 8,346 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 3 WA * 33 |
コンパイルメッセージ
main.cpp: In function 'int main()': main.cpp:72:8: warning: 'wv' may be used uninitialized [-Wmaybe-uninitialized] 72 | dfs(dfs,from,to); | ~~~^~~~~~~~~~~~~ main.cpp:33:9: note: 'wv' was declared here 33 | int wv; | ^~ main.cpp:63:8: warning: 'wu' may be used uninitialized [-Wmaybe-uninitialized] 63 | dfs(dfs,0,wu); | ~~~^~~~~~~~~~ main.cpp:31:9: note: 'wu' was declared here 31 | int wu,ni; | ^~
ソースコード
#include<iostream>#include<vector>#include<algorithm>using namespace std;using ll = long long;#include<set>int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int n,m;cin>>n>>m;vector<vector<pair<int,pair<char,int>>>> g(n);set<char> s;for(int i = 0;i<m;i++){int u,v;char c;cin>>u>>v>>c;u--;v--;s.insert(c);g[u].push_back({v,{c,i+1}});g[v].push_back({u,{c,i+1}});}if(s.size()==1){cout<<-1<<endl;return 0;}char no = g[n-1][0].second.first;int wu,ni;ni = -1;int wv;for(int i = 0;i<n;i++){for(auto itr:g[i]){if(itr.second.first==no) continue;wu = i;wv = itr.first;ni = itr.second.second;break;}if(ni!=-1) break;}vector<int> vis(n,0);bool fn = false;vector<int> que;auto dfs = [&](auto dfs,int ni,int to) -> void {vis[ni]++;if(ni==to){fn = true;return;}for(auto&itr:g[ni]){int nj = itr.first;if(vis[nj]) continue;que.push_back(itr.second.second);dfs(dfs,nj,to);if(fn) return;que.pop_back();}};dfs(dfs,0,wu);vector<int> ans = que;int cnt = ans.size();que.clear();for(int i = 0;i<n;i++) vis[i] = 0;int from = wv;ans.push_back(ni);int to = n - 1;if(cnt%2==1) to = g[n-1][0].first;dfs(dfs,from,to);for(int i:que) ans.push_back(i);for(int i = 0;i<cnt;i++){ans.push_back(g[n-1][0].second.second);if(to==n-1) {to = g[n-1][0].first;}else{to = n-1;}}cout<<ans.size()<<endl;for(int i = 0;i<ans.size();i++) cout<<ans[i]<<endl;}