挑战一行不超过 5050 个字符的最短代码 。

目前最短长度为 237237 ,最长一行代码长度为 5050

#include<iostream>
int n,x,i,f[1000005];
int p(int x){return f[x]==x?x:f[x]=p(f[x]);}
int main(){for(std::cin>>n,i=0;i<n;i++)f[i]=i;
for(i=0;i<n;i++)std::cin>>x,f[p(i)]=p(x-1);
for(x=i=0;i<n;i++)x+=f[i]==i;std::cout<<x;exit(0);}

2 条评论

  • @ 2025-9-17 15:33:04

    目前最短长度为233233

    #include<iostream>
    int n,x,i,f[1000005];
    int p(int x){return f[x]==x?x:f[x]=p(f[x]);}
    main(){for(std::cin>>n,i=0;i<n;i++)f[i]=i;
    for(i=0;i<n;i++)std::cin>>x,f[p(i)]=p(x-1);
    for(x=i=0;i<n;i++)x+=f[i]==i;std::cout<<x;exit(0);}
    
    • @ 2025-9-13 16:20:11

      tang shi ba\texttt{tang shi ba}

      • 1

      信息

      ID
      390
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      (无)
      递交数
      32
      已通过
      9
      上传者