听大佬们说是拓扑,但是我用的却不是;
大概是这样的,我存图没有用熟悉的邻接表(大概是错误的主因吧)而是用了一个二维数组,但不是邻接矩阵,我只不过把他们给的数据存到里面,
int a[N][9];
然后用队列存储当前点的上面连接的点
queue<ll>q[N];
然后就是读入(貌似没问题)
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i][7];
for(int j=1;j<=a[i][7];j++)
{
cin>>a[i][j];
q[a[i][j]].push(i);
}
}
然后就是主循环,循环n次,
在主循环中,第一个循环递推求出下边点的值

然后再用循环对当前点下的点的上面的点的值进行累加操作,最后可以得出下面的点值,然后再反复处理,直到该程序的所有出口
但是,,,,,