20分求调
查看原帖
20分求调
1059473
AC_zzh2013楼主2024/10/17 19:32
#include<bits/stdc++.h>
using namespace std;
string op[100005];
bool cmp(string a,string b)
{
	return a.size()>b.size();
}
map<string,int>pos;
map<char,int>vis;
int a[5005][5005];
int m[1000005];
int main()
{
	int n;
	cin>>n;
	int id; 
	string ans;
	for(int i=1;i<=n;++i)
	{
		cin>>m[i];
		if(m[i]==0)
		{
			cin>>a[i][0];
			if(a[i][0]==-1)
			{
				id=i;
			}
		}
		for(int j=1;j<=m[i];++j)
		{
			cin>>a[i][j];
		}
	}
	bool b=0;
	while(b==0)
	{
		int maxx=INT_MIN;
		bool f=0;
		int idx=id;
		for(int i=1;i<=n;++i)
		{ 
			if(a[i][m[i]]==idx)
			{
				if(maxx<m[i]+1)
				{
					maxx=m[i]+1;
					id=i;
				}
				f=1;
			}
		}
		idx=id;
		if(f==0)
		{
			break;
		}
		string s=to_string(id);
		for(int i=1;i<=m[id];++i)
		{
			s+=char(a[id][i]+'0');
		}
		ans=s+ans;
	}
	for(int i=0;i<ans.size();++i)
	{
		if(vis[ans[i]]==0)
		{
			cout<<ans[i]<<' ';
			vis[ans[i]]=1;
		}
	}
	return 0;
}
2024/10/17 19:32
加载中...