mxqz
查看原帖
mxqz
472950
封禁用户楼主2023/1/20 17:58
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,ans,k[100005],a[100005];
bool vis[100005],inq[100005];
vector<int>itt;

void dfs(int u){
	if(inq[u]){
		int z=itt.size()-1,mn=9999999999;
		do{
			mn=min(mn,a[itt[z]]);
			z--;
		}
		while(itt[z]!=u);
		ans-=mn;
		return;
	}
	if(vis[u])return;
	vis[u]=inq[u]=1;
	itt.push_back(u);
	dfs(k[u]);
	inq[u]=0;
	itt.pop_back();
}

signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>k[i]>>a[i];
		ans+=a[i];
	}
	for(int i=1;i<=n;i++){
		if(!vis[i])dfs(i);
	}
	cout<<ans; 
	return 0;
}

72pts,呜呜呜······

是多减了还是少减了?

2023/1/20 17:58
加载中...