MnZn 求助,WA on 6,10 TLE on 8

P3520 [POI2011] SMI-Garbage

是 MLE
by 蒟酱 @ 2022-11-14 16:05:50


可以确定不是 `vector` 存边的问题: ```cpp //不向焦虑与抑郁投降,这个世界终会有我们存在的地方。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cassert> #include<tuple> #include<ctime> #include<random> #if __cplusplus>=202002L #include<ranges> namespace vw=std::views; #endif #define siz(x) int((x).size()) #define cauto const auto #define all(x) std::begin(x),std::end(x) #define rall(x) std::rbegin(x),std::rend(x) #define sqrt __builtin_sqrt #define fi first #define se second #define continue(x) {x;continue;} #define break(x) {x;break;} using std::cin;using std::cout; using std::max;using std::min; using std::tie;using std::ignore; template<typename any>inline void cmin(any &x,const any &y){if(y<x)x=y;} template<typename any>inline void cmax(any &x,const any &y){if(x<y)x=y;} template<typename any,typename...args>inline void cmax(any &x,const any &y,const args &...z){cmax(x,y);cmax(x,z...);} template<typename any,typename...args>inline void cmin(any &x,const any &y,const args &...z){cmin(x,y);cmin(x,z...);} using loli=long long; using uloli=unsigned long long; using lodb=long double; using venti=__int128_t; using pii=std::pair<int,int>; using tiii=std::tuple<int,int,int>; using inlsi=const std::initializer_list<int>&; using bsi=std::basic_string<int>; using bsc=std::string; using std::operator""s; #if __cplusplus>=201703L using bscv=std::string_view; using std::operator""sv; #endif struct _time{~_time(){std::cerr<<"\n\033[33;40m"<<1.*clock()/CLOCKS_PER_SEC<<"s\033[37;40m";}}_TM; std::mt19937 rng(std::random_device{}()); constexpr venti operator""_vt(uloli x){return venti(x);} constexpr bool ying=false,yang=true; constexpr int N=1e5+1,M=2e6+1; int n,m,deg[N]; bool vis[N],ins[N],del[M]; bsi s,e,g[N]; bsi::iterator hed[N]; std::vector<bsi>ans; int l=1,nxt[M],head[M],go[M]; void add(int u,int v){nxt[++l]=head[u],head[u]=l,go[l]=v;} void dfs(int u){ vis[u]=true; // for(auto it=hed[u];it!=g[u].end();++it)if(int v=e[*it];!del[*it]){ for(int j=head[u],v=go[j];j;j=nxt[j],v=go[j]){ // del[*it]=del[*it^1]=yang; // hed[u]=next(it); del[j]=del[j^1]=yang; head[u]=nxt[j]; dfs(v); if(ins[v]){ ans.emplace_back(v,1); for(;s.back()!=v;s.pop_back()) ans.back()+=s.back(),ins[s.back()]=ying; }else s+=v,ins[v]=yang; } } signed main(){ // freopen(".in","r",stdin); // freopen(".out","w",stdout); std::ios::sync_with_stdio(false);cin.tie(nullptr); cin>>n>>m; for(int i=1,u,v,c1,c2;i<=m;i++){ cin>>u>>v>>c1>>c2; if(c1!=c2) // g[u]+=siz(e),e+=v, // g[v]+=siz(e),e+=u, add(u,v),add(v,u), deg[u]++,deg[v]++; } for(int i=1;i<=n;i++)if(deg[i]&1)return cout<<"NIE",0; for(int i=1;i<=n;i++)hed[i]=g[i].begin(); for(int i=1;i<=n;i++)if(!vis[i]){ dfs(i); if(ins[i]){ for(int j:s)ins[j]=ying; ans.emplace_back().swap(s); } } cout<<siz(ans)<<'\n'; for(cauto&v:ans){ cout<<siz(v)<<' '; for(int i:v)cout<<i<<' '; cout<<v.front()<<'\n'; } return 0; } ```
by 蒟酱 @ 2022-11-14 16:28:08


已经解决,`basic_string` 的构造函数调用错误。 ```cpp ans.emplace_back(1,v); ```
by 蒟酱 @ 2022-11-14 16:35:04


|