95分
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = 510,maxm = 510;
struct Node//点
{
int cid,num,sum;//cid 所在的环 num 所在环中第几个点,距离起点的时间
};
struct Circle//环
{
int time,rid;//time距离下一个点所用时间,rid 点的下标
};
using LL = long long;
vector<Circle> Line[maxm];//所有环
vector<Node> node[maxn];//所有点
LL dis[maxm],ans[maxn],len[maxm];
//dis 所有环拿到疫苗的最小时刻,ans所有点拿到疫苗的最小时刻,len 所有环的一圈所用的时间
int cir_node[maxm];//所有环中用最小时刻拿到疫苗的点是环中第几个点
int n,m;
bool visit[maxm];//环是否被更新
const LL INF = 0x3f3f3f3f3f3f3f3fLL;
template<typename T >
T exgcd(T a,T b,T & X,T & Y )//扩展欧几里得
{
if(!b)
{
X = 1,Y = 0;