本机AC,LOJ AC,UVA AC,本题CE?
查看原帖
本机AC,LOJ AC,UVA AC,本题CE?
578029
ivyjiao楼主2024/9/17 14:20

rt

#include<bits/stdc++.h>
using namespace std;
int t,n,d[26],cnt1,cnt2;
bool vis[26];
vector<int>G[26];
string s;
void dfs(int u){
	vis[u]=0;
	for(int i=0;i<G[u].size();i++){
		int v=G[u][i]; 
		if(!vis[v]) continue;
		dfs(v);
	}
}
int main(){
    cin>>t;
    while(t--){
    	memset(vis,0,sizeof vis);
		memset(d,0,sizeof d);
    	cnt1=0,cnt2=0;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>s;
            G[s[0]-'a'].push_back(s[s.size()-1]-'a');
			G[s[s.size()-1]-'a'].push_back(s[0]-'a');
            vis[s[0]-'a']=1;
			vis[s[s.size()-1]-'a']=1;
            d[s[0]-'a']--;
            d[s[s.size()-1]-'a']++;
        }
        dfs(s[0]-'a');
        for(int i=0;i<26;i++){
            if(d[i]==1) cnt1++;
            else if(d[i]==-1) cnt2++;
            else if(d[i]){
            	cout<<"The door cannot be opened.\n";
            	goto T2; 
			}
			if(vis[i]){
            	cout<<"The door cannot be opened.\n";
            	goto T2; 
			}
        }
        if(cnt1>1||cnt2>1){
        	cout<<"The door cannot be opened.\n";
        	goto T2; 
		}
        cout<<"Ordering is possible.\n";
        T2:;
    }
}
2024/9/17 14:20
加载中...