1 solutions
-
0
#include <bits/stdc++.h> using namespace std; const int N = 305; int n, m, a[N][N], minn, l[N * N]; set<int>e[N * N], d[N * N]; void topsort() { priority_queue<int> q; for (int i = 1; i <= minn; i++) { if (d[i].size() == 0) { q.push(i); } } while (!q.empty()) { int tmp = q.top(); q.pop(); cout << tmp << ' '; for (auto i : e[tmp]) { l[i]--; if (l[i] == 0) { q.push(i); } } } } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; minn = min(minn, a[i][j]); if (i <= 1 && a[i - 1][j] != a[i][j]) { e[a[i - 1][j]].insert(a[i][j]); d[a[i][j]].insert(a[i - 1][j]); } } } for (int i = 1; i <= minn; i++) { l[i] = d[i].size(); } topsort(); return 0; }
- 1
Information
- ID
- 4928
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 130
- Accepted
- 7
- Uploaded By