cqyz oj | 缃曡鐨勭З搴?| 鎷撴墤鎺掑簭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cqyz oj | 缃曡鐨勭З搴?| 鎷撴墤鎺掑簭相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/isp' title='isp'>isp   des   绱㈠紩   hid   ack   ring   tchar   putc   tin   

Description

銆€銆€涓€涓弽绋€涔︾睄鐨勬敹钘忓鏈€杩戝彂鐜颁簡涓€鏈敤闄岀敓鐨勮瑷€鍐欑殑涓€鏈功锛岃繖绉嶈瑷€閲囩敤鍜岃嫳璇竴鏍风殑瀛楁瘝銆傝繖鏈功鏈夌畝鍗曠殑绱㈠紩锛屼絾鍦ㄧ储寮曚腑鐨勬潯鐩殑娆″簭涓嶅悓浜庢牴鎹嫳璇瓧姣嶈〃缁欏嚭鐨勫瓧鍏告帓搴忕殑娆″簭銆傝繖浣嶆敹钘忓璇曞浘閫氳繃绱㈠紩鏉ョ‘瀹氳繖涓彜鎬殑瀛楁瘝琛ㄧ殑瀛楃鐨勬搴忥紝(鍗冲绱㈠紩鏉$洰缁勬垚鐨勫簭鍒楄繘琛屾暣鐞?锛屼絾鍥犱负浠诲姟鍐楅暱鑰屼箯鍛筹紝灏辨斁寮冧簡銆?br />銆€銆€璇风紪鍐欑▼搴忓畬鎴愯繖浣嶆敹钘忓鐨勪换鍔★紝绋嬪簭杈撳叆涓€涓寜鐗瑰畾鐨勫簭鍒楁帓搴忕殑瀛楃涓查泦鍚堬紝纭畾瀛楃鐨勫簭鍒楁槸浠€涔堛€?/p>

Input

銆€銆€杈撳叆鏄敱澶у啓瀛楁瘝缁勬垚鐨勫瓧绗︿覆鐨勬湁搴忓垪琛紝姣忚涓€涓瓧绗︿覆銆傛瘡涓瓧绗︿覆鏈€澶氬寘鍚?0涓瓧绗︺€傝鍒楄〃鐨勭粨鏉熸爣蹇楁槸涓€涓崟涓€瀛楃’锛?rsquo;鐨勪竴琛屻€傚苟涓嶆槸鎵€鏈夌殑瀛楁瘝閮借鐢ㄥ埌锛屼絾璇ュ垪琛ㄨ暣娑靛浜庤閲囩敤鐨勯偅浜涘瓧姣嶅瓨鍦ㄧ潃涓€涓畬鍏ㄧ殑娆″簭銆?/p>

Output

銆€銆€杈撳嚭鍙兘瀛樺湪涓夌鎯呭喌锛氬鏋滀笉鑳藉緱鍒颁竴涓畬鍏ㄦ搴忥紝鍒欒緭鍑簄one锛涘鏋滄搴忎笉鍞竴锛屽垯杈撳嚭 non-unique锛涘鏋滆兘鍞竴纭畾锛屽垯杈撳嚭瀛楁瘝鐨勬帓鍒楁搴忋€?/p>

Sample Input 1

XWY
ZX
ZXY
ZXW
YWWX
#

Sample Output 1

XZYW

Hint

瀛楃涓叉暟鐩渶澶氫笉瓒呰繃5000涓€?/div>

 
寤哄浘鏃跺彧闇€瑕佹瘮杈冪浉閭荤殑涓や釜瀛椾覆鏉ヨ幏寰楀瓧姣嶅ぇ灏忓叧绯伙紝鍥犱负涓や袱鐩镐簰姣旇緝鐨勫ぇ灏忓叧绯诲彲浠ョ敤鐩搁偦姣旇緝鐨勭粨鏋滄潵寰楀埌
鎶€鏈浘鐗? id=
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
typedef long long ll;
using namespace std;
const int maxn = 30, maxm = 5005, inf = 0x3f3f3f3f;

int fir[maxn], to[maxm], ne[maxm], np;
void add(int x, int y) {
    ne[++np] = fir[x];
    fir[x] = np;
    to[np] = y;
}

char w[maxm][maxn];
int cnt;
void data_in() {
    char tmp[maxn];
    cnt = 0;
    while(true) {
        scanf("%s", tmp);
        if(tmp[0] == 鈥?/span>#鈥?/span>) break;
        strcpy(w[++cnt], tmp);
    }
}

int n;
int rd[maxn];
int mark[maxn], ha[maxn][maxn];
vector<int> topo;
int toposort() {
    int ret = 1;
    queue<int> Q;
    for(int i=0; i<26; i++)
        if(mark[i] && !rd[i]) Q.push(i);
    while(!Q.empty()) {
        if(Q.size()>=2) ret = 2;
        int u = Q.front(); Q.pop();
        topo.push_back(u);
        for(int i=fir[u]; i; i=ne[i]) {
            int v = to[i];
            if(!--rd[v]) Q.push(v);
        }
    }
    if(topo.size() < n) ret = 0;
    return ret;
}

void sett() {
    for(int i=2; i<=cnt; i++) {
        int j = i-1, k = 0;
        while(w[i][k] && w[j][k]) {
            if(w[i][k] != w[j][k]) break;
            k++;
        }
        
        if(w[i][k] && w[j][k]){
            int x = w[i][k] - 鈥?/span>A鈥?/span>, y = w[j][k] - 鈥?/span>A鈥?/span>;
            if(ha[x][y]) continue;
            ha[x][y] = 1;
            add(x, y); rd[y]++;
            mark[x]++; mark[y]++;
        }
    }
    
    n = 0;
    for(int i=0; i<26; i++)
        if(mark[i]) n++;
}

void solve() {
    sett();
    int ok = toposort();
    if(ok == 0) puts("none");
    else if(ok == 2) puts("non-unique");
    else
        for(int i = topo.size()-1; i>=0; i--)
            putchar(topo[i]+鈥?/span>A鈥?/span>);
}

int main() {
    data_in();
    solve();
    return 0;
}
/*
XWY
ZX
ZXY
ZXW
YWWX
#

*/
View Code

以上是关于cqyz oj | 缃曡鐨勭З搴?| 鎷撴墤鎺掑簭的主要内容,如果未能解决你的问题,请参考以下文章

cqyz oj | 潜水比赛 | 贪心

cqyz oj | 猴子的战争 | 可并堆

cqyz oj | 树上的询问 | 最近公共祖先

CQYZ-OJ P1377 危险的组合

cqyz oj | 树的相交路径 | 最近公共祖先