蒟蒻拓扑排序WA求助
  • 板块P1113 杂务
  • 楼主Igallta
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/2/9 22:17
  • 上次更新2023/10/24 01:16:57
查看原帖
蒟蒻拓扑排序WA求助
813622
Igallta楼主2023/2/9 22:17

注释打好了 方便各位神犇查看

#include<bits/stdc++.h>
using namespace std;
int n,id[10001],k[10001];//id:入度 k:工作时间
long long ans;
bool vis[10001][10001]; //这两个点是否有连边
stack<int>s;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){//连边 计算入度 
		int u,tmp;
		cin>>u;
		cin>>k[u];
		while(1){
			cin>>tmp;
			if(tmp==0)break;
			vis[tmp][u]=1;
			++id[u];
			
		}
	}
	for(int i=1;i<=n;i++){if(id[i]==0){s.push(i);ans+=k[i];}}//寻找入度为0的点 入栈
	while(!s.empty()){//循环判空 然后不断入栈 并计算时间 
		int temp=s.top();
		s.pop();
		for(int i=1;i<=n;i++){
			if(vis[temp][i]==1){
				--id[i];
				if(id[i]==0){
					s.push(i);
					ans+=k[i];
				}
			}
		}
	} 
	cout<<ans;
	return 0;
}

2023/2/9 22:17
加载中...