求 hack
查看原帖
求 hack
1265456
封禁用户楼主2024/10/25 21:30

6868 ptspts 求调( WAWA onon #4 )

记录

codecode ::

#include<bits/stdc++.h>
#define ll long long//#define ll long long你值得拥有
using namespace std;
const int maxn=50005;
ll n;
string a[maxn],b[maxn];
map <string,string> fa;
map <string,ll> m;
string find(string x)
{
	return (x!=fa[x]?fa[x]=find(fa[x]):fa[x]);
}
int main()
{
	cin>>n;
	for(ll i=1;i<=n;i++)
	cin>>a[i];
	for(ll i=1;i<=n;i++)
	cin>>b[i];
	for(ll i=1;i<=n;i++)
	fa[a[i]]=(!isdigit(a[i][0])?fa[a[i]]:a[i]),fa[b[i]]=(!isdigit(b[i][0])?b[i]:fa[b[i]]);
	for(ll i=1;i<=n;i++)
	{
		if(a[i]!=b[i])
		{
			if(isdigit(a[i][0])&&isdigit(b[i][0]))
			{
				cout<<"NE"<<endl;
				return 0;
			}
			if(isdigit(a[i][0])&&!isdigit(b[i][0]))
			{
				if(m[b[i]]!=a[i][0]-'0'&&m[b[i]]!=0)
				{
					cout<<"NE"<<endl;
					return 0;
				}
				m[b[i]]=a[i][0]-'0';
			}
			if(!isdigit(a[i][0])&&isdigit(b[i][0]))
			{
				if(m[a[i]]!=b[i][0]-'0'&&m[a[i]]!=0)
				{
					cout<<"NE"<<endl;
					return 0;
				}
				m[a[i]]=b[i][0]-'0';
			}
			if(!isdigit(a[i][0])&&!isdigit(b[i][0]))
			fa[find(a[i])]=find(b[i]);
		}
	}
	for(ll i=1;i<=n;i++)
	fa[a[i]]=(!isdigit(a[i][0])?find(a[i]):fa[a[i]]),fa[b[i]]=(!isdigit(b[i][0])?find(b[i]):fa[b[i]]);
	for(ll i=1;i<=n;i++)
	{
		if(!isdigit(a[i][0]))
		{
			if(m[fa[a[i]]]!=0&&m[fa[a[i]]]!=m[a[i]]&&m[a[i]]!=0)
			{
				cout<<"NE"<<endl;
				return 0;
			}
			m[fa[a[i]]]=(m[fa[a[i]]]==0?m[a[i]]:m[fa[a[i]]]);
		}
		if(!isdigit(b[i][0]))
		{
			if(m[fa[b[i]]]!=0&&m[fa[b[i]]]!=m[b[i]]&&m[b[i]]!=0)
			{
				cout<<"NE"<<endl;
				return 0;
			}
			m[fa[b[i]]]=(m[fa[b[i]]]==0?m[b[i]]:m[fa[b[i]]]);
		}
	}
	cout<<"DA"<<endl;
	return 0;
}
2024/10/25 21:30
加载中...