70分求助!谢谢
查看原帖
70分求助!谢谢
1049567
study__student楼主2024/5/10 00:17

开了一个二维数组,空间没有溢出,但最后三个点TLE了,有没有啥改进的方法?求大佬指点

#include<bits/stdc++.h>
using namespace std;
const short MAXN=3e4+5;
short a[MAXN][MAXN];
int main()
{
	int x,y,i,j,n,p,q,cnt=0;
	cin>>n>>p>>q;
	for(i=1;i<=p;++i){
		scanf("%d%d",&x,&y);
		a[x][y]=1;
		a[y][x]=1;
	}
	for(i=1;i<=q;++i){
		scanf("%d%d",&x,&y);
		a[x][y]=2;
		a[y][x]=2;
	}
	for(i=1;i<=n;++i){
		for(j=i+1;j<=n;++j){
			if(a[i][j]==1){
				++cnt;
			}
			else if(a[i][j]==0){
				bool u=1;
				for(int k=1;k<=n;++k){
					if((a[i][k]==1&&a[k][j]==2)||(a[i][k]==2&&a[k][j]==1)){
						u=0;
						break;
					}
				}
				if(u) ++cnt;
			}
		}
	}
	cout<<cnt;
	return 0;
}
2024/5/10 00:17
加载中...