QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#618721 | #7003. Rikka with Minimum Spanning Trees | ship2077 | AC ✓ | 899ms | 5440kb | C++23 | 853b | 2024-10-07 08:52:36 | 2024-10-07 08:52:36 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
constexpr int M=1e5+5,mod=1e9+7;
vector<tuple<ull,int,int>>edge;
int T,n,m,cnt,f[M];ull k1,k2,ans;
ull rnd(){
ull k3=k1,k4=k2;
k1=k4;k3^=k3<<23;
k2=k3^k4^(k3>>17)^(k4>>26);
return k2+k4;
}
int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
void solve(){ edge.clear();ans=cnt=0;
scanf("%d%d%llu%llu",&n,&m,&k1,&k2);
for (int i=1;i<=m;i++){
int u=rnd()%n+1,v=rnd()%n+1;
edge.emplace_back(rnd(),u,v);
}
sort(edge.begin(),edge.end());
for (int i=1;i<=n;i++) f[i]=i;
for (auto [z,x,y]:edge){
int fx=find(x),fy=find(y);
if (fx==fy) continue;
f[fx]=fy;ans+=z%mod;cnt++;
}
printf("%llu\n",cnt==n-1?ans%mod:0);
}
int main(){scanf("%d",&T);while (T--) solve();return 0;}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 7ms
memory: 5376kb
input:
1 2 100000 123456789 987654321
output:
575673759
result:
ok single line: '575673759'
Test #2:
score: 0
Accepted
time: 899ms
memory: 5440kb
input:
100 17085 100000 676466090490 878574984049 24353 100000 685976930882 229685257786 4 100000 471961964055 157860429766 15406 100000 410376133349 828755231175 1 100000 809050431491 785471826497 1796 100000 218311747353 410830725634 93449 100000 761721499751 355474414706 3214 100000 277812617111 2429646...
output:
436638303 0 405150678 355979925 0 50713419 0 512195596 338362921 0 0 289558312 831627251 345103943 788519192 306890280 168133083 308823048 813378518 25758919 733644946 851485656 0 0 0 315609167 632805182 745061180 0 995073785 854970966 0 0 0 423134815 0 867689881 500810440 0 0 0 945701987 0 0 0 1959...
result:
ok 100 lines