题目:1088
题意:求矩阵中的最长递减长度
题解:拓扑排序(剥洋葱)
AC代码:
#include<iostream>
#include<vector>
using namespace std;
#define MAX 100
int cnt;
int dir[4][2] = { {0,1}, {0,-1}, {1, 0}, {-1, 0} };
int matrix[MAX][MAX];
int outdegree[MAX][MAX] = {0};
vector<int> v;
int main() {
int r, c;
int tx, ty; //坐标的临时变量
cnt = 0;
cin >> r >> c;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
cin >> matrix[i][j];
for (int i = 0; i < r; i++) //计算所有点的出度
for (int j = 0; j < c; j++)
for (int k = 0; k < 4; k++) {
tx = i + dir[k][0];
ty = j + dir[k][1];
if (tx < r && tx >= 0 && ty < c && ty >= 0 && matrix[i][j] < mat