AcWing343 排序(floyd傳遞閉包)

2021-10-23 16:22:14 字數 2091 閱讀 9724

題目:

給定 n 個變數和 m 個不等式。其中 n 小於等於26,變數分別用前 n 的大寫英文本母表示。

不等式之間具有傳遞性,即若 a>b 且 b>c ,則 a>c。

請從前往後遍歷每對關係,每次遍歷時判斷:

輸入格式

輸入包含多組測試資料。

每組測試資料,第一行包含兩個整數n和m。

接下來m行,每行包含乙個不等式,不等式全部為小於關係。

當輸入一行0 0時,表示輸入終止。

輸出格式

每組資料輸出乙個佔一行的結果。

結果可能為下列三種之一:

如果可以確定兩兩之間的關係,則輸出"sorted sequence determined after t relations: yyy...y.",其中't'指迭代次數,'yyy...y'是指公升序排列的所有變數。

如果有矛盾,則輸出:"inconsistency found after t relations.",其中't'指迭代次數。

如果沒有矛盾,且不能確定兩兩之間的關係,則輸出"sorted sequence cannot be determined."

資料範圍

2≤n≤26,變數只可能為大寫字母a~z。

輸入樣例1:

4 6

a輸出樣例1:

sorted sequence determined after 4 relations: abcd.

inconsistency found after 2 relations.

sorted sequence cannot be determined.

輸入樣例2:

6 6

a輸出樣例2:

inconsistency found after 6 relations.

輸入樣例3:

5 5

a輸出樣例3:

sorted sequence determined after 4 relations: abcde.

題解:這是個標準的傳遞閉包問題,我們可以使用floyd解決,若存在矛盾,則存在某個d[i][i]會有邊,若還有關係還未確立,則存在d[i][j]和d[j][i]都為0的情況,最後只需要注意一下輸出關係的優先順序就行,存在矛盾的話就輸出,然後才是還有未確立的關係。

#pragma gcc optimize(2)

#pragma gcc optimize(3)

#pragma gcc optimize("ofast","inline")

#includeusing namespace std;

#define ll long long

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define per(i,b,a) for(int i=b;i>=a;i--)

#define mst(a,b) memset(a,b,sizeof(a))

#define fir first

#define se second

#define pii pair#define lowbit(x) x&-x

const int n = 30;

int n,m,e[n][n],d[n][n];

bool st[n];

void floyd() }}

}int check()

}return 2;

}char getans()

}if(flag) }}

}int main()

}if(type == 0) cout << "inconsistency found after "<< t << " relations." << endl;

else if(type == 1) cout << "sorted sequence cannot be determined." << endl;

else

}return 0;

}

ACWING343 排序(floyd閉包)

給定 n 個變數和 m 個不等式。其中 n 小於等於26,變數分別用前 n 的大寫英文本母表示。不等式之間具有傳遞性,即若 a b 且 b c 則 a c。請從前往後遍歷每對關係,每次遍歷時判斷 如果能夠確定全部關係且無矛盾,則結束迴圈,輸出確定的次序 如果發生矛盾,則結束迴圈,輸出有矛盾 如果迴圈...

09 排序1 排序

09 排序1 排序 25 分 給定n 個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 include include includeusing namespace std const int cutoff 1000...

09 排序1 排序

n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。資料2 11個不相同的整數,測試基本正確性 資料3 10 3個隨機整數 資料4 10 4個隨機整數 資料5 10 5個隨機整數 資料6 10 5個順序整數 資料7 10 5個逆序整數 資料8 10 5個基本有序的整數 資料9 10 5個隨機正...