sdnu 1031 字母排序(拓撲排序的利用)

2021-07-03 23:45:33 字數 769 閱讀 5884

很明顯是拓撲排序的利用。

注意事項:

1.記錄下輸入到第幾個條件,產生矛盾或者已經排好序。

2.在有矛盾且m>=n-1的情況下,不能輸出無法確定順序。

**如下(感覺寫的不夠簡練,暫且這樣了):

#include#include#include#include#includeusing namespace std;

vectorabc[27];

queuesortabc;

int abcsum[27];

int main()

else

if (p)

}if (kk == -1)

tempabcsum[kk]--;

sortabc.push(kk + 'a');

for (unsigned int k = 0; k < abc[kk].size(); k++)

tempabcsum[abc[kk][k] - 'a']--;

}if (u&&q&&sortabc.size() == n)

}} if (!q&&sortabc.size() == n)

cout << "." << endl;

} else if (!p)

else

while (!sortabc.empty())

sortabc.pop();

for (int i = 0; i < 26; i++)

}} return 0;

}

sdnu 1089 拓撲排序

sdnu 1089 拓撲排序 emmm題意寫的很清楚。何時能拓撲排序呢?當有向圖不能按照方向可以形成乙個環時就不能拓撲排序了。當排序時肯定都個人是不受其他人限制的,那肯定先用它,即它的入度為零,當他用完了的時候,與它相鄰的又向前進了一步,即他們的入度 1,則當他入度為零的時候即不受所有人的限制了,就...

51nod1485 字母排序

題目看這裡 也是非常簡單的線段樹合併模板題了,雖然實際上最好的做法因該是開陣列合併 這樣是均攤o 1 的 不過還算跑的快,第四 pragma gcc opitmize o3 pragma g opitmize o3 include include include define mid l r 1 d...

CF 284E 拓撲排序 母函式

題目思路 首先對於 bi,ci 的限制,建圖,用拓撲排序,先反向建圖,然後t d a i d表示深度,反向建圖in為0的d為1,接著對於樣例1,想新增乙個2,3和4也要跟著加進去,然後用拓撲排序,求出新增每個數所需要的總和 ac 有個坑點 t必須用long long include includeu...