为什么80分dalao求助
查看原帖
为什么80分dalao求助
787512
qusia_MC楼主2024/3/11 15:50
#include<bits/stdc++.h>
using namespace std;
bool ifwsh[30000][30000];char isfriend[30000][30000];
int main()
{
	int n,m,p,q;int a1,a2;
	cin>>n>>p>>q; 
	memset(isfriend,'0',sizeof(isfriend));
	for(int i=0;i<p;i++)
	{
		cin>>a1>>a2;
		isfriend[a1][a2]=isfriend[a2][a1]='2';
	}
	for(int i=0;i<q;i++)
	{
		cin>>a1>>a2;
		isfriend[a1][a2]=isfriend[a2][a1]='1';
		
		for(int j=0;j<n;j++)
		{
			if((isfriend[a1][j]=='1'||isfriend[j][a1]=='1')&&(isfriend[j][a2]=='0'||isfriend[a2][j]=='0'))
			{
				isfriend[a2][j]='2';
			}
		}
		swap(a1,a2);
		for(int j=0;j<n;j++)
		{
			if((isfriend[a1][j]=='1'||isfriend[j][a1]=='1')&&(isfriend[j][a2]=='0'||isfriend[a2][j]=='0'))
			{
				isfriend[a2][j]='2';
			}
		}
	}
	int ans=0;
	for(int i=0;i<n;i++)
	{
			for(int j=i+1;j<n;j++)
			{
					if(isfriend[a2][j]=='2')
					{
						ans++;
					}
			}
		
			    
	}
	
	cout<<ans;
	return 0;
 } 
2024/3/11 15:50
加载中...