<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      P8269 [USACO22OPEN] Visits S

      題目傳送門

      博客傳送門

      首先,每頭牛牛都只有一個拜訪對象,所以如果考慮圖論建模的話,相當于每個點出度都是 1。這相當于圖是個基環樹森林(注意不只有一棵基環樹),而且每個基環樹都是內向基環樹。

      而且我們注意到有個特殊點,建出來的圖是很多個環,就更加堅定了我們往基環樹那塊考慮的想法。我們把一個基環樹的圖畫出來:

      P8269_1_1

      (很像你媽媽的鑰匙串有木有)

      然后轉換一下原題的題意。既然決定圖論建模了,那原題的 \(a_i\) 就相當于 \(i -> a_i\) 建邊,邊權是 \(v_i\)。至于排列,其實就是個行動順序表,問我們如何安排行動順序會讓最終貢獻最大。

      對于不在環里的節點,顯然不斷讓入度為 0 的點行動是更優的。首先一個點出去拜訪以后就不可能回來,其次對于下圖的情況,先讓連向 \(v\) 的點拜訪 \(v\),然后 \(v\) 再去拜訪別人,比先讓 \(v\) 拜訪別人,多了 \(w_1+w_2+\cdots+w_k\) 的貢獻。

      P8269_2_1

      所以對于環外的部分,直接貪心地進行拓撲排序,累加邊權即可。

      這樣我們就只剩下基環樹森林里僅存的幾個環了。

      P8269_3_1

      對于一個環來說,顯然你是注定無法讓它們都能統計貢獻的。你可以自己在腦子里想象這些點逐個移動到它的拜訪點,然后你就會發現注定有一個點的拜訪點已經挪走了。

      剛才那一通模擬后你還能得到,如果這個環有 \(m\) 條邊,那你一定可以統計 \(m-1\) 條邊的貢獻,而且這樣一定是比 \(m-2\) 條邊或者更往下的情況更優。那些情況一定是如下的圖所展示的:

      P8269_4_1

      也就是 1->2,2->3,4->5,3->4,5->1。那你一定不如 1->2,2->3,3->4,4->5,5->1 或是 4->5,5->1,1->2,2->3,3->4 優。

      既然這樣,那就相當于我們要在這個環上舍棄一條邊。貪心一下,我們舍棄這個環上的最小邊。這棵基環樹的貢獻就是它邊權的總和減掉被舍棄的邊之邊權。

      注意原圖里有多個基環樹,也會有多個環,要將它們被舍棄的邊求一個 sum,然后統一減掉。

      代碼:

      P8269
      #include<bits/stdc++.h>
      #define int long long
      using namespace std;
      
      inline int read(){
      	int x=0,f=1;char c=getchar();
      	while(c<48){
      		if(c=='-') f=-1;
      		c=getchar();
      	}
      	while(c>47) x=(x<<1)+(x<<3)+(c^48),c=getchar();
      	return x*f;
      }
      
      const int N=1e5+5;
      const int inf=1e16;
      int n,h[N],tot,in[N],p[N],W[N],vis[N],mi=inf;
      queue<int> q;
      struct Nahida{
      	int u,v,w,nxt;
      }e[N];
      
      inline void add(int u,int v,int w){
      	e[++tot]={u,v,w,h[u]};h[u]=tot;in[v]++;
      }
      
      inline void dfs(int u){
      	vis[u]=1;
      	for(int i=h[u];i;i=e[i].nxt){
      		int v=e[i].v;
      		mi=min(mi,e[i].w);
      		if(vis[v]) continue;
      		dfs(v);
      	}
      }
      
      signed main(){
      	n=read();
      	int sum=0;
      	for(int i=1;i<=n;i++){
      		int v=read(),w=read();
      		p[i]=v,W[i]=w;
      		sum+=W[i];
      		add(i,v,w);
      	}
      	for(int i=1;i<=n;i++){
      		if(!in[i]){
      			q.push(i);
      		}
      	}
      	int ans=0;
      	while(!q.empty()){
      		int u=q.front();q.pop();
      		int v=p[u];
      		if(in[v]){
      			in[v]--;
      			if(!in[v]){
      				q.push(v);
      			}
      		}
      	}
      	int misum=0;
      	for(int i=1;i<=n;i++){
      		if(in[i]&&!vis[i]){
      			mi=inf;
      			dfs(i);
      			misum+=mi;
      		}
      	}
      	ans=sum-misum;
      	printf("%lld",ans);
      	return 0;
      }
      
      posted @ 2025-10-28 20:28  qwqSW  閱讀(7)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 江源县| 亚洲激情一区二区三区视频| 免费国产一区二区不卡| 亚洲午夜av一区二区| 国产免费一区二区不卡| 国产精品午夜福利免费看| 日韩中文字幕v亚洲中文字幕| 你懂的视频在线一区二区| 99999久久久久久亚洲| 国产精品免费AⅤ片在线观看 | 肃北| 亚洲精品一区二区三区色| 亚洲av永久无码精品网站| 久久久精品人妻一区二区三区蜜桃| 激情综合色综合久久综合 | 国产一区二区三区内射高清| 岛国中文字幕一区二区| 国产成人无码区免费内射一片色欲| 乱中年女人伦av三区| 国产成人精品一区二区三区| 亚洲国产日韩欧美一区二区三区 | 国产精品视频中文字幕| 欧美激情一区二区| 天堂va亚洲va欧美va国产| 中文字幕亚洲国产精品| 久热色精品在线观看视频| 最新国产精品拍自在线播放| 最新偷拍一区二区三区| 伊人春色激情综合激情网| 高清无码在线视频| 亚洲欧美牲交| 国产精品一区二区小视频| 午夜一区欧美二区高清三区| 高中女无套中出17p| 亚洲国产熟女一区二区三区| 在线天堂最新版资源| 综合色天天久久| 日韩精品国产精品十八禁| 国产香蕉97碰碰久久人人| 午夜福利激情一区二区三区| 极品白嫩少妇无套内谢|