关于本地AC你谷CE
  • 板块P1127 词链
  • 楼主aSunnyDay
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/2/18 23:12
  • 上次更新2023/11/5 03:05:27
查看原帖
关于本地AC你谷CE
482730
aSunnyDay楼主2021/2/18 23:12

大家好,我又双叒叕地来问问题了,为啥我本地ACluoguCE,麻烦各位大佬看一下,谢谢!

#include<bits/stdc++.h>
#define N 1009
using namespace std;
typedef long long ll;
ll n,cnt,y=0;
bool vis[N];
string s[N],ans[N];
vector<ll> to[N],b[N];
void print(){
	for(ll i=1;i<cnt;++i) cout<<ans[i]<<".";
	cout<<ans[cnt];
}
bool dfs(ll x,ll fa,ll sum){
	ans[++cnt]=s[x],vis[x]=1;
//	cout<<x<<" "<<cnt<<" "<<sum<<" "<<s[x]<<endl;
	if(sum==n){print();exit(0);}
	bool ok=0;
	for(ll i=0,v;i<to[x].size();++i)
		if((v=to[x][i])!=fa&&!vis[v]){
			ok=1;dfs(v,x,sum+1);
		}
	vis[x]=0;
	--cnt;
	if(!ok) return 0;
}
int main(){
	ios::sync_with_stdio(false); 
	cin>>n;
	for(ll i=1;i<=n;++i) cin>>s[i];
	sort(s+1,s+n+1);
	for(ll i=1;i<=n;++i)
		for(ll j=1;j<=n;++j)
			if(j!=i&&s[i][s[i].size()-1]==s[j][0]){to[i].push_back(j);b[j].push_back(i);}
	for(ll i=1;i<=n;++i) y+=abs(b[i].size()-to[i].size());
	if(y>2){cout<<"***";return 0;}
	for(ll i=1;i<=n;++i){
		cnt=0;
		fill(vis,vis+N,0); 
		dfs(i,0,1);
	}
	cout<<"***";
	return 0;
}

评测记录

2021/2/18 23:12
加载中...