求助+求条!奇怪的问题?
查看原帖
求助+求条!奇怪的问题?
808773
forever516楼主2024/9/6 21:45

本蒟蒻写了一个floyd

#include<bits/stdc++.h>
#define N 10500
using namespace std;
int n,m,f[105][105],ans=0;
int floyd(){
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				f[i][j]=f[i][j]||f[i][k]&&f[k][j];
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int a,b;
		cin>>a>>b;
		f[a][b]=1;
	}
	floyd();
	for(int i=1;i<=n;i++){
		int tmp=1;
		for(int j=1;j<=n;j++){
			if(i==j)continue;
			else tmp=tmp&&f[i][j]||f[j][i];
		}
		ans+=tmp;
	}
	cout<<ans;
	
	return 0;
}

结果全RE了! 将floyd放在main里面,则:

#include<bits/stdc++.h>
#define N 10500
using namespace std;
int n,m,f[105][105],ans=0;
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int a,b;
		cin>>a>>b;
		f[a][b]=1;
	}
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				f[i][j]=f[i][j]||f[i][k]&&f[k][j];
			}
		}
	}
	for(int i=1;i<=n;i++){
		int tmp=1;
		for(int j=1;j<=n;j++){
			if(i==j)continue;
			else tmp=tmp&&f[i][j]||f[j][i];
		}
		ans+=tmp;
	}
	cout<<ans;
	
	return 0;
}

有10pts!

2024/9/6 21:45
加载中...