每个节点记录四个量,从左到右最多匹配到第几个字符,以及初始的端点。从右到左最多匹配到第几个字符,以及初始的端点。 #include<bits/stdc++.h> using namespace std; const int N=5e5+7; int n,m; struct Edge{ int u,v,w,nxt; Edge(int u=0,int v=0,int w=0,int nxt=0):u(u),v(v),w(w),nxt(nxt){} }e[N*2]; int p[N],edn; void add(int u,int v,int w){ e[++edn]=Edge(u,v,...