1 条题解

  • 0
    @ 2026-4-16 19:14:30
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N=210,inf=1e9;
    int d[N][N],v[N],s[N];
    signed main()
    {
    	int n;cin>>n;
    	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%1lld",&d[i][j]);
    	deque<int>q;q.push_back(1);v[1]=0;
    	while(!q.empty())
    	{
    		int x=q.front();q.pop_front();
    		for(int j=1;j<=n;j++)if(d[x][j])
    		{
    			if(!v[j])v[j]=1,s[j]=s[x]^1,q.push_back(j);
    			else if(s[j]==s[x])
    			{
    				cout<<-1;
    				return 0;
    			}
    		}
    	}
    	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i!=j&&d[i][j]==0)d[i][j]=inf;
    	for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    		if(i!=j&&j!=k&&i!=k)
    			d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
    	int ans=0;
    	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ans=max(ans,d[i][j]);
    	cout<<ans+1;
    	return 0;
    }
    • 1

    信息

    ID
    8484
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    7
    已通过
    2
    上传者