关于时间复杂度
查看原帖
关于时间复杂度
1219953
Forose楼主2024/3/24 15:46
#include<cstdio>
const int N=1e3+10;
int n,m,k,a[N][N],cow[N],vis[N],cnt[N],ans;
void dfs(int u){
	cnt[u]++;
	vis[u]=1;
	for(int i=1;i<=n;i++){
		if(a[u][i]==1&&vis[i]==0) dfs(i);
	}
}
int main(){
	scanf("%d %d %d",&k,&n,&m);
	for(int i=1;i<=k;i++){
		scanf("%d",&cow[i]);
	}
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d %d",&x,&y);
		a[x][y]=1;
	}
	for(int i=1;i<=k;i++){
		vis[cow[i]]=1;
		dfs(cow[i]);
		for(int j=1;j<=n;j++) vis[j]=0;
	}
	for(int i=1;i<=n;i++){
		if(cnt[i]==k) ans++;
	}
	printf("%d",ans);
	return 0;
} 

dfs复杂度不会求,这里是O(m)O(m)吗?

似乎分不清什么时候是O(n)/O(m)O(n)/O(m),什么时候是O(2n)O(2^n)。

2024/3/24 15:46
加载中...