Atcoder Grand Contest 039B(思维,BFS)

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int col[207],s[207],n;
char ss[207][207];
int bfs(int x){
int l=0,r=0;
for(int i=1;i<=n;i++)
col[i]=0;
s[++r]=x;
col[x]=1;
while(l<r){
x=s[++l];
for(int i=1;i<=n;i++)
if(ss[x][i]-'0'){
if(col[i]==0){
col[i]=col[x]+1;
s[++r]=i;
}
else if(abs(col[i]-col[x])!=1)
return -1;
}
}
return col[s[r]];
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int ans=-1;
cin>>n;
for(int i=1;i<=n;++i)
cin>>ss[i]+1;
for(int i=1;i<=n;++i)//枚举起点
ans=max(ans,bfs(i));//找长度最长的最短路
printf("%d",ans);
}

保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11627240.html