Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define pii pair<int,int>
- #define pll pair<ll,ll>
- #define pli pair<ll,int>
- #define fi first
- #define se second
- #define inf (INT_MAX/2-1)
- #define infl (1LL<<60)
- #define vi vector<int>
- #define pb push_back
- #define sz(a) (int)(a).size()
- #define all(a) begin(a),end(a)
- #define y0 y5656
- #define y1 y7878
- #define aaa system("pause");
- #define dbg(x) cerr<<(#x)<<": "<<(x)<<'\n',aaa
- #define dbga(x,n) cerr<<(#x)<<"[]: ";for(int _=0;_<n;_++)cerr<<x[_]<<' ';cerr<<'\n',aaa
- #define dbgs(x) cerr<<(#x)<<"[stl]: ";for(int _:x)cerr<<_<<' ';cerr<<'\n',aaa
- #define dbgp(x) cerr<<(#x)<<": "<<x.fi<<' '<<x.se<<'\n',aaa
- #define maxn 100000
- #define maxm 50000
- using namespace std;
- ifstream fin ("milkorder.in");
- ofstream fout ("milkorder.out");
- int n, m;
- vi sir[maxm+5];
- vector<pii> g[maxn+5]; ///fi=unde duci se=din ce sir este mch
- priority_queue<int,vi,greater<int> > pq;
- int grad[maxn+5];
- vi can (int nr) {
- fill(all(grad), 0);
- while (!pq.empty()) pq.pop();
- for (int i = 0; i < n; i++)
- for (pii nn: g[i])
- if (nn.se <= nr) grad[nn.fi]++;
- for (int i = 0; i < n; i++)
- if (grad[i] == 0) pq.push(i);
- vi ans;
- while (!pq.empty()) {
- int nod = pq.top(); pq.pop();
- ans.pb(nod);
- for (pii nn: g[nod])
- if (nn.se <= nr) {
- grad[nn.fi]--;
- if (grad[nn.fi] == 0) pq.push(nn.fi);
- }
- }
- return ans;
- }
- int main () {
- fin >> n >> m;
- int i, j, x, z, pas;
- for (i = 0; i < m; i++) {
- fin >> z;
- for (j = 0; j < z; j++) fin >> x, sir[i].pb(x-1);
- }
- for (i = 0; i < m; i++)
- for (j = 0; j < sz(sir[i])-1; j++)
- g[sir[i][j]].pb({sir[i][j+1], i});
- vi lst, cur;
- for (z = -1, pas = (1<<17); pas > 0; pas >>= 1)
- if (z+pas < m) {
- cur = can(z+pas);
- if (sz(cur) == n) lst = cur;
- z += pas;
- }
- for (int aa: lst) fout << aa+1 << ' ';
- fin.close(); fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement