首页 > 其他分享 >CF--新年场--D

CF--新年场--D

时间:2023-01-01 11:55:41浏览次数:31  
标签:连通 新年 fa -- TT CF cin int

关键

这种有因果关系的,确实是用图论,但是我是想用topo
最后连边失败

这里是分成多个连通块,每个连通块的点数必须和边数相同
而且如果已经算过贡献,就不在重复计算了

代码

//每一个环的点数和边数都必须要相同
//如果这个环已经乘过贡献了,那就不在次计算贡献,直接标记为1就可以了
//用并查集来统计连通块的点和边
//两个点一条边就可以了
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int M=1e5+5;
const int mod=998244353;

int a[M],b[M];;
int siz[M],cnt[M];
bool st[M];
int fa[M];
int find(int x) {
    return x==fa[x]?fa[x]:fa[x]=find(fa[x]);
}

signed main() {
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int TT;cin>>TT;
    while(TT--) {
        int n;cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<=n;i++)cin>>b[i];
        for(int i=1;i<=n;i++)cnt[i]=st[i]=0,fa[i]=i,siz[i]=1;
        int ans=1;
        for(int i=1;i<=n;i++) {
            if(a[i]==b[i])st[a[i]]=1,ans=ans*n%mod;//自环的环,标记已成乘过了
            cnt[a[i]]++;
            fa[find(a[i])]=find(b[i]);
        }
        for(int i=1;i<=n;i++)
            if(find(i)!=i)cnt[find(i)]+=cnt[i],st[find(i)]|=st[i],siz[find(i)]++;
        //吧孩子的状态进行统计
        for(int i=1;i<=n;i++)
            if(find(i)==i) {
                if(cnt[i]!=siz[i])ans=0;//点数和边数不相同
                if(st[i]==0)ans=ans*2%mod;
            }
        cout<<ans<<endl;
    }
    return 0;
}
//当时是想着有些点是已经连了,然后把已经连过的相关的点又进行连接,模拟起来确实有些复杂
//正确性也不得而知,虽然感觉思路没啥问题
//但是还是需要简化模拟吧

标签:连通,新年,fa,--,TT,CF,cin,int
From: https://www.cnblogs.com/basicecho/p/17017912.html

相关文章

  • ES6什么是结构-set\map怎么用
         window.onload=function(){vara=1;varb=2;varc=3;vara=1,b=2,c=3;//数组解构//Es6匹配模式:等号两......
  • C语言江苏大学校园导航系统
    C语言江苏大学校园导航系统2江苏大学校园导航系统的设计与实现2.1题目简述本次课题要求针对江苏大学校园实现一个景点/地点导航系统,提供查看学校地图、查看地点信息查......
  • Django视图层
    目录Django视图层一、视图层之必会三板斧二、JsonResponse对象三、request对象四、视图层之FBV与CBV五、CBV源码剖析六、虚拟环境Django视图层一、视图层之必会三板斧用......
  • Linux内核机制—softirq
     基于Linux-5.10.110一、软中断简介1.软中断是一种中断底半部机制,允许在中断上下文中,因此软中断函数中不能休眠。2.软中断是函数是在开中硬断的环境下调用,但是调用前......
  • 【排序】【数组】LeetCode 75. 颜色分类
    题目链接75.颜色分类思路题目要求按0、1、2的顺序排序,因为数量有限,所以通过两次遍历,分别将0和1交换到合适的位置,这样两次遍历之后,剩下的2就都在尾部了。代码classSol......
  • 异常处理实例
    1、继承Python内置异常类实现自定义异常类'''继承Python内置异常类实现自定义异常类'''classShortInputException(Exception):'自定义异常类'def__init__......
  • Python画日历图
    遇到需要统计一年中每天的某个数值,并以日历的方式呈现出来excel中准备好数据:#导入用到的包importpandasaspdimportmatplotlib.pyplotaspltimportseabornas......
  • HZNU Winter Trainning 8 补题
    CodeForces-1353DConstructingtheArray题目传送门:https://vjudge.net/contest/536385#problem/D题意:给你一个全是0的数组,用1-n的数将这个数组填满,规则是从左至右筛......
  • 外包or外派岗,可以去?
    大家好,今天说说外包/外派岗位那些事。上一回说到,Sheldon争取到大厂工作的机会,其实是世界500强外资银行H,委托某上市人力外包公司C招的外派岗位。外包/外派的本质在H银行......
  • PyTorch 2.0 推理速度测试:与 TensorRT 、ONNX Runtime 进行对比
    PyTorch2.0于2022年12月上旬在NeurIPS2022上发布,它新增的torch.compile组件引起了广泛关注,因为该组件声称比PyTorch的先前版本带来更大的计算速度提升。这......