[ABC319G]题解
提供一种奇奇怪怪的思路。
设
初值为
转移式为
而此题要求的答案则为
对于
首先我们算出
由于这是一个删去了
注意到题目中的最短路不会很长(?),所以我们直接套用上述做法
如果在第
如果
本人的实现复杂度为
UPD 于 2024/5/3: 被 after_contest 制裁力(大悲),hack 数据的答案是
解决方法很简单,我们只需将代码中的运算对
当
#include<iostream>
#define int long long
#define mod 998244353
#define Mod 6987710471
#define N 200005
using namespace std;
int n,m,u[N],v[N],f[N],g[N];
signed main()
{
cin>>n>>m,f[1]=1;
for(int i=1;i<=m;i++)cin>>u[i]>>v[i];
for(int rd=1;rd<=666;rd++)
{
int sum=0;
for(int i=1;i<=n;i++)sum=(sum+f[i])%Mod;
for(int i=1;i<=n;i++)g[i]=(sum-f[i]+Mod)%Mod;
for(int i=1;i<=m;i++)
g[u[i]]=(g[u[i]]-f[v[i]]+Mod)%Mod,
g[v[i]]=(g[v[i]]-f[u[i]]+Mod)%Mod;
for(int i=1;i<=n;i++)f[i]=g[i];
if(f[n]){cout<<f[n]%mod;return 0;}
}
cout<<-1;
}