Problem - B - Codeforces
SOLUTION
其实直接用sort
进行排序,
考虑两个元素 $x<y$ 。假设它们在 $p$ 中的位置分别是 $i$ 和 $j$ 。
如果 $g_{x,y}=1$,我们知道 $i<j$,否则 $i>j$ 。
CODE
#include<bits/stdc++.h> using namespace std;
void resolution();
int main(){ ios::sync_with_stdio(0); int T; cin >> T; while(T--){ resolution(); } return 0; }
string g[1001];
bool cmp(int u, int v) { if(u < v){ return g[u][v] == '1'; } return g[v][u] == '0'; }
void resolution(){ int n; cin >> n; for (int i = 0; i < n; i++){ cin >> g[i]; } int perm[1001]; for (int i = 0; i < n; ++i){ perm[i] = i; } sort(perm, perm + n, cmp); for (int i = 0; i < n; ++i){ cout << perm[i] + 1 << " "; } cout << endl; return ; }
|