开了一个二维数组,空间没有溢出,但最后三个点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;
}