社区讨论
萌新非妹子求调
P1127词链参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mbxe0usv
- 此快照首次捕获于
- 2025/06/15 16:12 8 个月前
- 此快照最后确认于
- 2025/06/16 16:12 8 个月前
C
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
const int M=1e4+5;
int n,m;
int start;
int in[N];
string s[N];
int head[N];
bool flag[N];
vector<pair<int,int> > G[N];
bool deleted[M];
vector<int> ans;
void dfs(int x)
{
for(int i=head[x];i<G[x].size();i=head[x])
{
auto u=G[x][i];
int v=u.first;
int w=u.second;
head[x]++;
if(!deleted[w])
{
deleted[w]=true;
dfs(v);
}
}
ans.push_back(x);
}
int main()
{
n=26;
cin>>m;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>s[i];
u=s[i][0]-'a'+1,v=s[i][s[i].size()-1]-'a'+1;
G[u].push_back(make_pair(v,i));
in[u]++;
in[v]++;
//G[v].push_back(make_pair(u,i));
}
for(int i=n;i>=1;i--)
{
if(in[i])
{
sort(G[i].begin(),G[i].end());
start=i;
}
}
int cnt=0;
for(int i=1;i<=n;i++) cnt+=(in[i]&1);
if(cnt==1||cnt>2)
{
cout<<"***";
return 0;
}
for(int i=1;i<=n;i++)
{
if(in[i]&1)
{
start=i;
break;
}
}
dfs(start);
reverse(ans.begin(),ans.end());
sort(s+1,s+m+1);
int lst=-1;
int Ccnt=0;
if(ans.size()!=m+1)
{
cout<<"***";
return 0;
}
for(auto x:ans)
{
Ccnt++;
if(lst==-1) lst=x;
else
{
for(int i=1;i<=n;i++)
{
if(s[i][0]==char(lst+'a'-1)&&s[i][s[i].size()-1]==char(x+'a'-1)&&!flag[i])
{
flag[i]=true;
if(Ccnt==ans.size()) cout<<s[i];
else cout<<s[i]<<'.';
break;
}
}
lst=x;
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...