ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#200627 | #3474. 连通块数量 | JuRuoError_YBW | 100 | 1831ms | 60292kb | C++11 | 1.6kb | 2024-01-07 11:41:19 | 2024-01-07 12:05:26 |
answer
#include <bits/stdc++.h>
#include <bits/extc++.h>
#define int long long
char freadgetchar(){
static char buf[100000],*p1=buf,*p2=buf;
if(p1==p2){
p2=(p1=buf)+fread(buf,1,100000,stdin);
if (p1==p2)return EOF;
}
return *p1++;
}
void read(int&x){
static char c;
c=freadgetchar();
int b=1;
for(x = 0;!(c>='0'&&c<='9');c=freadgetchar()) if(c == '-') b = -b;
for(;c>='0'&&c<='9';x=x*10+c-'0',c=freadgetchar());x*=b;
}
const int MAXN=1e6+5;
std::vector<int> g[MAXN];
int n,m;
int tag[MAXN],vis[MAXN],s[MAXN];
int dgr[MAXN];
int fa[MAXN],tot;
void init(){
for(int i=1;i<=n;i++)fa[i]=i;
}
int findfa(int x){
if(x==fa[x])return x;
else return fa[x]=findfa(fa[x]);
}
void merge(int x,int y){
int fx=findfa(x),fy=findfa(y);
if(fx!=fy)fa[fx]=fy;
}
int minn=1,minx=0;
signed main(){
std::ios::sync_with_stdio(0);
//freopen("2024.in","r",stdin);
std::cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
std::cin>>u>>v;
g[u].emplace_back(v);
g[v].emplace_back(u);
++dgr[u];
++dgr[v];
}
init();
for(int i=2;i<=n;i++){
if(dgr[i]<dgr[minn])minx=dgr[i],minn=i;
}
for(auto x:g[minn]){
tag[x]=1;
}
for(int i=1;i<=n;i++){
if(!tag[i]){
fa[i]=minn;
vis[i]=1;
}
}
for(int i=1;i<=n;i++){
if(!vis[i])s[++tot]=i;
}
memset(tag,0,sizeof tag);
for(int i=1;i<=n;i++){
int cnt=0;
for(auto x:g[i]){
tag[x]=1;
cnt+=vis[x];
}
if(tot+cnt<n)merge(i,minn);
for(int j=1;j<=tot;j++){
if(!tag[s[j]])merge(i,s[j]);
}
for(auto x:g[i]){
tag[x]=0;
}
}
int ans=0;
for(int i=1;i<=n;i++)ans+=(fa[i]==i);
std::cout<<ans<<'\n';
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 92ms
memory: 40660kb
input:
941 442218 106 339 515 606 923 444 123 606 186 395 37 580 49 571 339 940 591 14 499 755 798 530 81 1...
output:
889
result:
ok single line: '889'
Test #2:
score: 10
Accepted
time: 87ms
memory: 40868kb
input:
954 454485 498 636 732 270 577 534 247 443 421 910 431 765 873 208 369 906 644 14 861 275 203 717 67...
output:
858
result:
ok single line: '858'
Test #3:
score: 10
Accepted
time: 83ms
memory: 40664kb
input:
932 433809 923 721 70 569 495 626 606 3 599 390 775 113 692 645 759 856 160 257 165 513 294 660 108 ...
output:
895
result:
ok single line: '895'
Test #4:
score: 10
Accepted
time: 116ms
memory: 44224kb
input:
200000 200000 9411 13081 102149 19907 193611 24114 159730 105867 96529 35050 21890 102981 87777 1824...
output:
1
result:
ok single line: '1'
Test #5:
score: 10
Accepted
time: 132ms
memory: 44228kb
input:
200000 200000 125539 129221 106895 82089 118673 102890 99009 89855 30685 139232 82330 30021 87868 18...
output:
1
result:
ok single line: '1'
Test #6:
score: 10
Accepted
time: 118ms
memory: 44216kb
input:
200000 200000 176259 110770 87448 103054 67926 181667 95184 41139 164840 76118 118577 22469 96470 17...
output:
1
result:
ok single line: '1'
Test #7:
score: 10
Accepted
time: 273ms
memory: 53564kb
input:
22085 1000000 8869 21194 8244 21337 16569 14762 6614 11105 19632 13741 4234 4177 4234 15482 8869 649...
output:
23
result:
ok single line: '23'
Test #8:
score: 10
Accepted
time: 281ms
memory: 53768kb
input:
42928 1000000 22158 7729 1341 19332 6305 7112 15501 33423 34891 39753 1341 41204 15501 6448 30776 38...
output:
13
result:
ok single line: '13'
Test #9:
score: 10
Accepted
time: 307ms
memory: 55384kb
input:
86058 1000000 80664 54565 70936 66426 15732 12971 70936 4641 42626 61035 41941 40769 80664 54705 211...
output:
7
result:
ok single line: '7'
Test #10:
score: 10
Accepted
time: 342ms
memory: 60292kb
input:
111020 1000000 50007 869 19222 62960 6500 80064 71353 33380 71353 5481 71353 20752 4597 15614 46508 ...
output:
5
result:
ok single line: '5'
Extra Test:
score: 0
Extra Test Passed