当前位置: 首页 > news >正文

CF2135 C. By the Assignment

C.By the Assignment


原题链接

题意简述

给定一张无向图,每个点带有一个权值,要求图上任意两点之间的简单路径权值异或和相同,现在权值存在缺失,缺失的权值为-1,求补全图使之满足性质的方式有多少种?

解题思路

手玩两组样例,不难发现由于异或自反性的限制,可以把无向图分成若干个 "边双",满足某个边双中如果存在奇环则其一定权值得为0,如果不存在则这个边双权值处处相等。直接bcc把图分解为若干个边双,二分图染色判断环是否为奇环,然后利用乘法原理累乘就做完了。

AC code

//Stop learning useless algorithms, go and solve some problems, learn how to use binary search.
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
const int mod=998244353;
struct DECC{vector< vector<pair<int,int> >>G;vector< vector<int> >B;// 存储所有边双连通分量vector<int>dfn,low;//时间戳stack<int>st;vector<char>vis;vector<int>mp;// 每个点属于哪个分量int cnt,n,id;DECC(int n):n(n),cnt(0),id(0){G.resize(n+1);low.resize(n+1);dfn.resize(n+1);mp.resize(n+1);}void add(int x,int y){++id;G[x].push_back({y,id});G[y].push_back({x,id});}void tarjan(int u,int fa){dfn[u]=low[u]=(++cnt);st.push(u);for(auto &[v,id]:G[u]){if(!dfn[v]){tarjan(v,id);low[u]=min(low[u],low[v]);}else if(id!=fa&&dfn[v]<dfn[u]){low[u]=min(low[u],dfn[v]);}}if(dfn[u]==low[u]){vector<int>tmp;int y;do{y=st.top();mp[y]=B.size();st.pop();tmp.push_back(y);}while(y!=u);if(!tmp.empty()) B.push_back(tmp);}}void run(){for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i,0);}}
};
void solve(){int n,m;ll v;cin>>n>>m>>v;vector<int>a(n+1);for(int i=1;i<=n;i++) cin>>a[i];DECC decc(n+1);for(int i=1;i<=m;i++){int x,y;cin>>x>>y;decc.add(x,y);}decc.run();vector<int>col(n+1,-1);auto bfs=[&](vector<int>&a) ->bool {queue<int>Q;Q.push(a.front());col[a.front()]=0;while(!Q.empty()){int u=Q.front();Q.pop();for(auto &[v,id]:decc.G[u]){if(decc.mp[v]!=decc.mp[u]) continue;if(col[v]==-1){Q.push(v);col[v]=(col[u]^1);}else if(col[v]==col[u]) return false;}}return true;};ll ans=1;for(int i=0;i<decc.B.size();i++){if(decc.B[i].front()>n) continue;if(bfs(decc.B[i])) {int val=-1;for(int j=0;j<decc.B[i].size();j++){int u=decc.B[i][j];if(a[u]!=-1) {val=a[u];break;}}for(int j=0;j<decc.B[i].size();j++){int u=decc.B[i][j];if(val!=a[u]&&a[u]!=-1){cout<<0<<endl;return;}a[u]=val;}if(val==-1) ans=ans*v%mod;}else{for(int j=0;j<decc.B[i].size();j++){int u=decc.B[i][j];if(a[u]==-1) a[u]=0;else if(a[u]!=0) {cout<<0<<endl;return;}}}}cout<<ans<<endl;
}
int main(){cin.tie(0)->ios::sync_with_stdio(false);int T=1;cin>>T;while(T--) solve();return 0;
}
http://www.hskmm.com/?act=detail&tid=33712

相关文章:

  • 2025 年防爆冰箱厂家推荐:浙江其春电气技术解析,防爆冰箱 / 冷柜 / 空调专业解决方案与应用实践
  • 2025 年互联网推广公司推荐:北京蓝海引擎科技,为中小企业提供智能化数字营销解决方案
  • Android 网络请求:多功能网络请求库
  • 触想参与国家标准起草,助力行业规范化发展
  • 349. 两个数组的交集
  • F5 BIG-IP 16.1.6.1 - 多云安全和应用交付
  • 2025 年最新推荐!污水处理设备优质厂家排行榜,帮企业避开劣质产品选到高效靠谱设备
  • Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
  • 2025 年最新推荐真空炉制造厂家榜单:覆盖高温烧结 / 真空退火 / 智能铍铜炉,助力企业精准选型
  • 数论——CF757B Bashs Big Day
  • F5 安全事件:BIG-IP 源代码被窃取
  • F5 BIG-IP 15.1.10.8 - 领先的应用交付与安全服务
  • 2025 测量仪器厂家最新推荐榜单:国产新锐与领军品牌深度解析,精准匹配工业科研需求
  • Ant Design:企业级 UI 设计语言与 React 组件库
  • 2025 年最新推荐钢套钢保温钢管源头厂家榜:聚焦品质与实力,精选优质厂家助力采购决策
  • 2025年10月市场地位认证机构推荐榜:尚普与华信人深度对比评测
  • 2025年10月智能体公司推荐榜单:五强对比与中立评测助您精准选型
  • XPath索引定位深度解析://X[n]与(//X)[n]的本质区别
  • 2025年10月波形护栏厂家推荐榜单:基于公开数据的中立对比与选购参考
  • 优化电商包装的机器学习模型解析
  • Index of /python/
  • 2025年10月项目管理工具推荐榜:十款主流平台深度对比与选购指南
  • 2025年10月项目管理工具推荐榜单:基于真实数据的中立对比与选购指南
  • GRPO
  • 2025年10月项目管理工具推荐榜:覆盖敏捷瀑布混合模式的中立评析与避坑要点
  • QQ音乐v19.51下载
  • 2025年10月止痒控油洗发水推荐榜:十款热门单品多维对比与中性选购指南
  • 2025年10月止痒控油洗发水推荐榜单:十款热门单品深度对比与中立评测
  • 关于小程序开发的事(需要找团队开发的,请看)
  • 2025年10月止痒控油洗发水评测推荐:聚焦头皮屏障修复与临床验证的排名解析