結果
問題 | No.1078 I love Matrix Construction |
ユーザー |
![]() |
提出日時 | 2020-06-12 22:47:09 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 4,485 bytes |
コンパイル時間 | 1,839 ms |
コンパイル使用メモリ | 193,616 KB |
最終ジャッジ日時 | 2025-01-11 02:48:03 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In instantiation of ‘void OUT(T&&) [with T = std::vector<int>&]’: main.cpp:172:7: required from here main.cpp:37:74: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘std::vector<int>’) 37 | template<typename T > void OUT(T && a ) { cout << a << endl; } | ~~~~~^~~~ In file included from /usr/include/c++/13/istream:41, from /usr/include/c++/13/sstream:40, from /usr/include/c++/13/complex:45, from /usr/include/c++/13/ccomplex:39, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:127, from main.cpp:1: /usr/include/c++/13/ostream:110:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(__ostream_type& (*)(__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __ostream_type = std::basic_ostream<char>]’ 110 | operator<<(__ostream_type& (*__pf)(__ostream_type&)) | ^~~~~~~~ /usr/include/c++/13/ostream:110:36: note: no known conversion for argument 1 from ‘std::vector<int>’ to ‘std::basic_ostream<char>::__ostream_type& (*)(std::basic_ostream<char>::__ostream_type&)’ {aka ‘std::basic_ostream<char>& (*)(std::basic_ostream<char>&)’} 110 | operator<<(__ostream_type& (*__pf)(__ostream_type&)) | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/13/ostream:119:7: note: candidate: ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(__ios_type& (*)(__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __ostream_type = std::basic_ostream<char>; __ios_type = std::basic_ios<char>]’ 119 | operator<<(__ios_type& (*__pf)(__ios_type&)) | ^~~~~~~~ /usr/include/c++/13
ソースコード
#include <bits/stdc++.h>using namespace std;using LL = long long int;#define incID(i, l, r) for(int i = (l) ; i < (r); ++i)#define decID(i, l, r) for(int i = (r) - 1; i >= (l); --i)#define incII(i, l, r) for(int i = (l) ; i <= (r); ++i)#define decII(i, l, r) for(int i = (r) ; i >= (l); --i)#define inc(i, n) incID(i, 0, n)#define dec(i, n) decID(i, 0, n)#define inc1(i, n) incII(i, 1, n)#define dec1(i, n) decII(i, 1, n)#define inID(v, l, r) ((l) <= (v) && (v) < (r))#define inII(v, l, r) ((l) <= (v) && (v) <= (r))#define PB push_back#define EB emplace_back#define MP make_pair#define MT make_tuple#define FI first#define SE second#define FR front()#define BA back()#define ALL(v) v.begin(), v.end()#define RALL(v) v.rbegin(), v.rend()auto setmin = [](auto & a, auto b) { return (b < a ? a = b, true : false); };auto setmax = [](auto & a, auto b) { return (b > a ? a = b, true : false); };auto setmineq = [](auto & a, auto b) { return (b <= a ? a = b, true : false); };auto setmaxeq = [](auto & a, auto b) { return (b >= a ? a = b, true : false); };#define SI(v) static_cast<int>(v.size())#define RF(e, v) for(auto & e: v)#define until(e) while(! (e))#define if_not(e) if(! (e))#define ef else if#define UR assert(false)#define IN(T, ...) T __VA_ARGS__; IN_(__VA_ARGS__);void IN_() { };template<typename T, typename ... U> void IN_(T & a, U & ... b) { cin >> a; IN_(b ...); };template<typename T > void OUT(T && a ) { cout << a << endl; }template<typename T, typename ... U> void OUT(T && a, U && ... b) { cout << a << " "; OUT(b ...); }// ---- ----// https://beet-aizu.github.io/library/library/graph/stronglyconnectedcomponent.cpp.htmlstruct SCC{vector< vector<int> > G,R,T,C;vector<int> vs,used,blg;SCC(){}SCC(int n):G(n),R(n),used(n),blg(n){}void add_edge(int u,int v){G[u].emplace_back(v);R[v].emplace_back(u);}void dfs(int v){used[v]=1;for(int u:G[v])if(!used[u]) dfs(u);vs.emplace_back(v);}void rdfs(int v,int k){used[v]=1;blg[v]=k;C[k].emplace_back(v);for(int u:R[v])if(!used[u]) rdfs(u,k);}int build(){int n=G.size();for(int v=0;v<n;v++)if(!used[v]) dfs(v);fill(used.begin(),used.end(),0);int k=0;for(int i=n-1;i>=0;i--){if(!used[vs[i]]){T.emplace_back();C.emplace_back();rdfs(vs[i],k++);}}for(int v=0;v<n;v++)for(int u:G[v])if(blg[v]!=blg[u])T[blg[v]].push_back(blg[u]);for(int i=0;i<k;i++){sort(T[i].begin(),T[i].end());T[i].erase(unique(T[i].begin(),T[i].end()),T[i].end());}return k;}int operator[](int k) const{return blg[k];}};// https://beet-aizu.github.io/library/library/graph/twosatisfiability.cpp.htmlstruct TwoSat{int n;SCC scc;TwoSat(int n):n(n),scc(n*2){}int negate(int v){return (n+v)%(n*2);}void add_if(int u,int v){// u -> v <=> !v -> !uscc.add_edge(u,v);scc.add_edge(negate(v),negate(u));}void add_or(int u,int v){// u or v <=> !u -> vadd_if(negate(u),v);}void add_nand(int u,int v){// u nand v <=> u -> !vadd_if(u,negate(v));}void set_true(int v){// v <=> !v -> vscc.add_edge(negate(v),v);}void set_false(int v){// !v <=> v -> !vscc.add_edge(v,negate(v));}vector<int> build(){scc.build();vector<int> res(n);for(int i=0;i<n;i++){if(scc[i]==scc[n+i]) return {};res[i]=scc[i]>scc[n+i];}return res;}};template<typename T> istream & operator>>(istream & s, vector<T> & v) { RF(e, v) { s >> e; } return s; }template<typename T> ostream & operator<<(ostream & s, vector<T> const & v) {inc(i, SI(v)) { s << (i == 0 ? "" : " ") << v[i]; }return s;}int main() {IN(int, n);vector<int> s(n), t(n), u(n);cin >> s >> t >> u;inc(i, n) {s[i]--;t[i]--;}auto id = [&](int i, int j) { return n * i + j; };TwoSat ts(n * n);inc(i, n) {inc(j, n) {int a = id(s[i], j);int b = id(j, t[i]);int A = ts.negate(a);int B = ts.negate(b);if(u[i] == 0) { ts.add_or(a, b); }if(u[i] == 1) { ts.add_or(A, b); }if(u[i] == 2) { ts.add_or(a, B); }if(u[i] == 3) { ts.add_or(A, B); }}}auto res = ts.build();if(res.empty()) { OUT(-1); } else {inc(i, n) {vector<int> v;inc(j, n) { v.PB(res[id(i, j)] ? 1 : 0); }OUT(v);}}}