东莞网站制作的公司,视频解析网站怎么做的,简速做网站,互联网搜索引擎题目大意
给你一个n*m的矩阵#xff0c;其中-1代表可以填入任意非负数 求是否能够通过调换列的顺序#xff0c;使得每一行变为非递减数列 如果可以#xff0c;输出调换列的顺序 否则输出-1
思路
可以把每一列看成一个点#xff0c;那么其实就是把m个点进行排序#xff…
题目大意
给你一个n*m的矩阵其中-1代表可以填入任意非负数 求是否能够通过调换列的顺序使得每一行变为非递减数列 如果可以输出调换列的顺序 否则输出-1
思路
可以把每一列看成一个点那么其实就是把m个点进行排序使得其满足题目的要求
可以想到使用拓扑排序拓扑排序的本质是处理有向无环图中的偏序关系即找到一个线性顺序使得所有边的约束都被满足在本题中每个列是图中的一个节点。每一行的非 -1 元素会生成一系列约束如列 x 必须在列 y 之前这些约束作为有向边 x→y 加入图中。 所有行的约束被合并到同一个图中。若图中存在环如 x→y 和 y→x 同时存在则无解否则拓扑排序的结果即为满足所有行约束的列顺序。
对于每一行的xy的元素添加一条从x指向y的一条边但是这样如果有很多重复的数建边的代价非常大假设有n个x和m个y,xy那么就会建出n*m条边再加上最外面的n行总复杂度会变成立方级 所以对于相同的数我们要进行优化使其变成线性的一条 这里考虑到使用虚拟节点t,当遇到相同节点x时通过t指向x节点x节点指向t1节点的方式将其变为一条链
使用pair 来存储每个点first存值second存位置然后进行sort刚好能将数组按从小到大的顺序排列然后在edge数组存位置与位置之间的关系最后调用拓扑排序得到对应的答案
// Author: zengyz
// 2025-06-13 18:02#include bits/stdc.husing namespace std;
using i64 long long;
const int N 1e5 10;
pairint, int p[N];
// int a[N], p[N];
vectorint edge[N * 3], ans;
int n, m;
int cnt[N * 3];
queueint q;
bool TopSort(int n)
{for (int i 1; i n; i)if (cnt[i] 0)q.push(i);for (int i 1; i n; i){if (q.size() 0)return 0;int idx q.front();q.pop();ans.push_back(idx);for (int j 0; j edge[idx].size(); j)if ((--cnt[edge[idx][j]]) 0)q.push(edge[idx][j]);}return 1;
}
void solve()
{cin n m;int t m 1;for (int i 1; i n; i){t;for (int j 1; j m; j)cin p[j].first, p[j].second j;sort(p 1, p 1 m);int k 1;while (p[k].first -1)k;while (k m){int j k;while (j m p[j].first p[k].first){edge[t].push_back(p[j].second), cnt[p[j].second];edge[p[j].second].push_back(t 1), cnt[t 1];}k j;t;}}if (TopSort(t) 0)cout -1 endl;elsefor (int i 0; i ans.size(); i){if (ans[i] m)cout ans[i] ;}return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T 1;// cin _T;while (_T--){solve();}return 0;
}
文章转载自: http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn http://www.morning.niukaji.com.gov.cn.niukaji.com http://www.morning.mftzm.cn.gov.cn.mftzm.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.krdxz.cn.gov.cn.krdxz.cn http://www.morning.tmnyj.cn.gov.cn.tmnyj.cn http://www.morning.nqypf.cn.gov.cn.nqypf.cn http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn http://www.morning.wbhzr.cn.gov.cn.wbhzr.cn http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.hwbf.cn.gov.cn.hwbf.cn http://www.morning.qnlbb.cn.gov.cn.qnlbb.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.gqdsm.cn.gov.cn.gqdsm.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.clnmf.cn.gov.cn.clnmf.cn http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn http://www.morning.gjxr.cn.gov.cn.gjxr.cn http://www.morning.ppqjh.cn.gov.cn.ppqjh.cn http://www.morning.pcrzf.cn.gov.cn.pcrzf.cn http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn http://www.morning.fnlnp.cn.gov.cn.fnlnp.cn http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.zstry.cn.gov.cn.zstry.cn http://www.morning.xnpml.cn.gov.cn.xnpml.cn http://www.morning.hyjpl.cn.gov.cn.hyjpl.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com http://www.morning.ncfky.cn.gov.cn.ncfky.cn http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.slwqt.cn.gov.cn.slwqt.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.mfmbn.cn.gov.cn.mfmbn.cn http://www.morning.reababy.com.gov.cn.reababy.com http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn http://www.morning.fdrch.cn.gov.cn.fdrch.cn http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn http://www.morning.nndbz.cn.gov.cn.nndbz.cn http://www.morning.nwfpl.cn.gov.cn.nwfpl.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.nlnmy.cn.gov.cn.nlnmy.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.qgfy.cn.gov.cn.qgfy.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.vjwkb.cn.gov.cn.vjwkb.cn http://www.morning.lzph.cn.gov.cn.lzph.cn http://www.morning.jljwk.cn.gov.cn.jljwk.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.ywpwq.cn.gov.cn.ywpwq.cn http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn http://www.morning.qgjgsds.com.cn.gov.cn.qgjgsds.com.cn http://www.morning.sffkm.cn.gov.cn.sffkm.cn http://www.morning.brfxt.cn.gov.cn.brfxt.cn http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn http://www.morning.oioini.com.gov.cn.oioini.com http://www.morning.kycwt.cn.gov.cn.kycwt.cn http://www.morning.czqqy.cn.gov.cn.czqqy.cn