Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>using namespace std;#define maxn 105int A[maxn],dist[maxn][maxn],L[maxn];vector<int> lays[maxn],vec;int isleaf[maxn],par[maxn];int n,m,k;void solve(){for(int i=n-1;i>0;i--){for(int b=0;b<lays[i].size();b++){int cur = lays[i][b];if( par[cur]!=-1 )continue;int c = i-1;for(int j=0;j<lays[c].size();j++){int id = lays[c][j];if( isleaf[id] == 0 ){par[cur] = id;isleaf[id] = 1;for(int z=1;z<=n;z++){if(dist[cur][z]==2 && par[z]==-1){par[z] = id;}}for(int z=1;z<=n;z++){dist[id][z] = dist[cur][z]-1;dist[id][z] = max(-1,dist[id][z]);