#P14594. [Bulgarian 2023]graph

[Bulgarian 2023]graph

题目描述

给定一个无向图和一个正整数 nn。记 d(a,b)d(a,b) 为:

  • 从顶点 aa 到顶点 bb 的最短路径长度(按边数计),如果两点连通;
  • 若两点之间不存在路径,则 d(a,b)=d(a,b)=\infty

如果四元组 (u1,v1,u2,v2)(u_1,v_1,u_2,v_2) 同时满足以下条件,我们称其为一个有趣四元组

  1. u1,v1,u2,v2u_1,v_1,u_2,v_2 两两不同;
  2. d(u1,v1)=1d(u_1,v_1)=1
  3. d(u2,v2)=1d(u_2,v_2)=1
  4. d(u1,u2)d(u_1,u_2) \ne \infty
  5. d(v1,v2)d(v_1,v_2) \ne \infty

也就是说,(u1,v1)(u_1,v_1)(u2,v2)(u_2,v_2) 都必须是图中的边,并且 u1,u2u_1,u_2 连通、v1,v2v_1,v_2 也连通。

请编写程序 graph,求出所有有趣四元组中

d(u1,u2)+d(v1,v2)d(u_1,u_2)+d(v_1,v_2)

的最小可能值。

如果不存在有趣四元组,输出 1-1

输入格式

第一行输入一个整数 nn,表示顶点数。

接下来共有 n1n-1 行。

ii 行包含 n1in-1-i 个字符 xi,i+1,xi,i+2,,xi,nx_{i,i+1},x_{i,i+2},\dots,x_{i,n}

  • 若某个字符为 1,表示顶点 ii 与对应顶点之间有一条无向边;
  • 若为 0,表示两点之间没有边。

输出格式

输出一个整数,表示最小可能值;若不存在满足条件的四元组,输出 1-1

数据范围

  • 1n50001 \le n \le 5000

子任务

子任务 分值 nn
1 5 50\le 50
2 110\le 110
3 15 550\le 550
4 35 2200\le 2200
5 40 5000\le 5000

只有通过某个子任务中的全部测试点,才能获得该子任务的全部分数。

样例输入 #1

4
111
11
1

样例输出 #1

2