一个奇怪的问题
查看原帖
一个奇怪的问题
686297
LegendaryGrandmaster楼主2023/1/10 18:55

第一次:63pts

#include<bits/stdc++.h>
using namespace std;
long long n,m,c=0,a[101][101],f[101],x,i,j,k;
int main()
{
    cin>>n;
    for(i=1;i<=n;i++){
		while(cin>>x){
			if(x==0)break;
			a[i][x]=1;
		}
	}
	for(i=1;i<=n;i++)  
        for(j=1;j<=n;j++)  
            for(k=1;k<=n;k++)  
            	if(a[j][i]&&a[i][k])a[j][k]=1;
    for(i=1;i<=n;i++){
        f[i]=i;
        for(j=1;j<=n;j++)  
        	for(k=1;k<=n;k++)  
                if(a[j][k]!=0)f[k]=f[j]; 
	}
    for(i=1;i<=n;i++)  
        if(f[i]==i)c++; 
    cout<<c;
}

RE原因显然


第二次:100pts

#include<bits/stdc++.h>
using namespace std;
long long n,m,c=0,a[201][201],f[201],x,i,j,k;
int main()
{
    cin>>n;
    for(i=1;i<=n;i++){
		while(cin>>x){
			if(x==0)break;
			a[i][x]=1;
		}
	}
	for(i=1;i<=n;i++)  
        for(j=1;j<=n;j++)  
            for(k=1;k<=n;k++)  
            	if(a[j][i]&&a[i][k])a[j][k]=1;
    for(i=1;i<=n;i++){
        f[i]=i;
        for(j=1;j<=n;j++)  
        	for(k=1;k<=n;k++)  
                if(a[j][k]!=0)f[k]=f[j]; 
	}
    for(i=1;i<=n;i++)  
        if(f[i]==i)c++; 
    cout<<c;
}

为什么把数组调大后就不超时了呢?萌新求助QwQ

2023/1/10 18:55
加载中...