#bzoj3887. Grass Cownoisseur

Grass Cownoisseur

题目描述

为了更好地管理奶牛的放牧路线,农夫约翰在他的农场里铺设了单向的牛径。农场由NN个编号为11NN的田地组成,每条单向牛径连接两块田地。例如,若一条牛径从田地XX连向田地YY,则奶牛可从XX前往YY但不可反向通行。众所周知,贝茜这头奶牛最爱尽可能多地啃食不同田地的青草。她每天早晨总从11号田地出发,沿着一系列田地游走,傍晚时分再返回11号田地。她始终力求使行程途经的田地数量最大化,因为每到一处田地就能享用那里的青草(即便多次到访,草料也只吃一次)。不出所料,贝茜对FJ\text{FJ}单向限制的路径感到非常不满,因为这很可能会减少她日常路线中能造访的独立牧场数量。她想知道如果违反规定、逆向通行一条路径,最多能吃多少草料。请计算从牧场11出发并最终返回牧场1的路线中,她最多能造访多少独立牧场,要求路线中最多仅允许逆向通行一条路径。贝茜的旅程中最多只能逆行一次,甚至不能重复逆向通行同一条路径。

题目解释

给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少正整数次对答案的贡献均为11

输入格式

第一行输入包含NNMM,给出字段数和单向路径数。以下MM行分别描述了一条单向奶牛路径。每行包含两个不同的字段编号XXYY,对应于从XXYY的奶牛路径。同一奶牛路径不会出现多次。

输出格式

一行表示贝茜在从字段11开始和结束的路线上可以访问的最大不同字段数,前提是她最多只能沿着这条路线在错误的方向上走一条路。

样例

7 10
1 2
3 1
2 5
2 4
3 7
3 5
3 6
6 5
7 2
4 7
6

数据规模与约定

对于100%100\%的数据:1N,M1000001\le N,M\le 100000.