SP2139 TLE 求助
查看原帖
SP2139 TLE 求助
481330
sunyizhe还是MC大佬楼主2024/1/18 21:53

好像我只是用了 STL,感觉和题解的时间复杂度一样?(STL 问题?)

//程序算法:STL,模拟
#include <bits/stdc++.h>
using namespace std;
const int N=2e4+10;

string s[N];
int a,b;

void fast_read()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
}

int main()
{
	//freopen("input.in","r",stdin);
	//freopen("output.out","w",stdout);
	
	fast_read();
	
	while(cin>>a>>b&&(a||b))
	{
		set<int> vis[N];
		map<string,int> dict;
		
		string name;
		for(int i=1;i<=a;i++)
		{
			cin>>name;
			dict.insert(make_pair(name,i));
			vis[i].insert(i);
		}
		
		string s1,s2;
		for(int i=1;i<=b;i++)
		{
			cin>>s1>>s2;
			int id1=dict[s1],id2=dict[s2];
			
			for(auto& x:vis[id1])vis[id2].insert(x);
			for(auto& x:vis[id2])vis[id1].insert(x);
			
			/*
			for(int i=1;i<=a;i++)
				cout<<vis[i].size()<<' ';
			cout<<endl<<endl;
			*/
		}
		
		bool pd=true;
		for(int i=1;i<=a;i++)
			if(vis[i].size()<a)
			{
				pd=false;
				break;
			}
		
		if(pd)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
2024/1/18 21:53
加载中...