AtCoder Grand Contest 039 B

https://atcoder.jp/contests/agc039/tasks/agc039_b

思路: 首先分析出不能满足题设条件的情况: 作一次bfs,若相邻结点的深度差不为1,则肯定不行,输出-1即可。

         若满足题设条件,枚举每一个节点,对于每次枚举,都求出该情况下图的直径,输出所有情况中最大直径即可。

#include
using namespace std;
typedef long long ll;
typedef double db;
const ll N=1e5+5;
const ll mod=1e9+7;
int n;
char s[205][205];
int vis[205];
int dep[205];
struct node{
    int a,b,d;
};
queueq;
vectorv[205];
void clear(queue& q){
    queue empty;
    swap(empty,q);
}

int flag=1;

int main(){
    std::ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>s[i];
    for(int i=1;i<=n;i++){
        for(int j=0;j

 

你可能感兴趣的:(AtCoder Grand Contest 039 B)