很明顯是拓撲排序的利用。
注意事項:
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...