日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nefuoj1487时空乱流

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nefuoj1487时空乱流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時空亂流
Problem:1487
Time Limit:1500ms
Memory Limit:65535K
Description
星際飛行員Alice在一次航行中遭遇了時空亂流,時空亂流將導致Alice乘坐的飛船在n個位面之間穿梭。
星際宇航局管理員Bob收到了Alice的求救信號,決定在某些位面上設立監測站,當Alice進入某個已經設立監測站的位面后,她會立即被拯救。
由于不同位面情況不同,設立監測站的花費也不相同。在第i個位面設立監測站,所需花費為Ci。
時空亂流已經被星際宇航局完全勘測,每個位面都有通往某個位面的通道,如果第i個位面沒有監測站,Alice會前往第Ai個位面。(若Ai=i則會停留在當前位面)
Bob并不知道Alice的初始位置,他必須考慮所有可能的情況,并使用盡可能少的花費,確保能從時空亂流中救出Alice。
你能幫Bob計算出至少要花費多少,才能確保能救出Alice嗎?
Input
第一行一個整數T,表示有T組測試數據。
每組測試數據,第一行一個整數n (1≤n≤200000),表示有n個位面。
第二行n個整數Ci(1≤Ci≤10000),表示在第i個位面設立監測站的花費Ci。
第三行n個整數Ai(1≤Ai≤n),表示第i個位面通往第Ai個位面。
Output
每組數據輸出一個整數,表示最小花費。
Sample Input
3
5
1 2 3 2 10
1 3 4 3 3
4
1 10 2 10
2 4 2 2
7
1 1 1 1 1 1 1
2 2 2 3 6 7 6
Sample Output
3
10
2
Hint
輸入數據較多,請使用scanf/printf
Source
AotoriChiaki

分類:tarjan
用tarjan把強連通分量求出來,用一個數組min_cost記錄該強連通分量的最小花費

#include <stdio.h> #include <algorithm> #include <string.h> using namespace std; #define mem(x,y) memset(x,y,sizeof x) #define maxn 200010 #define inf 0x3f3f3f3f struct Node{int to;int next;}; Node e[maxn]; int dfn[maxn],low[maxn],stack[maxn],head[maxn],vis[maxn],belong[maxn],out[maxn],cost[maxn],min_cost[maxn]; int n,cnt,cnt1,tot,inde; void Init() {mem(head,-1);mem(out,0);mem(dfn,0);mem(low,0);mem(stack,0);mem(vis,0);cnt=cnt1=tot=inde=0;for(int i=1;i<=n;i++)min_cost[i]=inf; } void add(int x,int y) {e[++cnt].next=head[x];e[cnt].to=y;head[x]=cnt; } void tarjan(int x) {dfn[x]=low[x]=++tot;stack[++inde]=x;vis[x]=1;for(int i=head[x];i!=-1;i=e[i].next){int v=e[i].to;if(!dfn[v]){tarjan(v);low[x]=min(low[x],low[v]);}else if(vis[v])low[x]=min(low[x],dfn[v]);}if(low[x]==dfn[x]){cnt1++;while(x!=stack[inde+1]){belong[stack[inde]]=cnt1;vis[stack[inde]]=0;min_cost[cnt1]=min(min_cost[cnt1],cost[stack[inde]]);inde--;}} } int main() {int t;scanf("%d",&t);while(t--){scanf("%d",&n);Init();for(int i=1;i<=n;i++)scanf("%d",&cost[i]);for(int i=1;i<=n;i++){int xx;scanf("%d",&xx);if(i!=xx)add(i,xx);}int ans=0;for(int i=1;i<=n;i++)if(!dfn[i])tarjan(i);/*for(int i=1;i<=n;i++)if(!dfn[i])ans+=cost[i];*/for(int i=1;i<=n;i++)for(int j=head[i];j!=-1;j=e[j].next)if(belong[i]!=belong[e[j].to])out[belong[i]]++;for(int i=1;i<=cnt1;i++)if(!out[i])ans+=min_cost[i];printf("%d\n",ans);}return 0; }

總結

以上是生活随笔為你收集整理的nefuoj1487时空乱流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧美高清视频 | 一区二区在线精品 | 五月视频| 日韩福利视频在线观看 | 91国产一区二区 | 亚洲双插| 先锋影音制服丝袜 | av日日夜夜| 日韩成年人视频 | 男女网站在线观看 | 欧美激情综合色综合啪啪五月 | 精品一区二区久久 | 精品黄色在线观看 | 日韩人妻精品一区二区三区 | 电影《两个尼姑》免费播放 | 欧美肥妇bwbwbwbxx | 蜜臀一区| 成人精品一区二区三区 | 另类小说一区二区 | 中国一区二区三区 | 亚洲红桃视频 | 红桃成人在线 | 欧美xxxxx高潮喷水麻豆 | 成年人视频免费在线观看 | 国产a级免费 | 男女无套免费视频网站动漫 | 欧美做爰性生交视频 | 天天摸天天插 | 久久精品无码一区二区三区毛片 | 国产1区2区3区中文字幕 | 91av导航| 成年人免费看的视频 | 亚洲欧美日本另类 | 少妇熟女一区二区三区 | 亚洲欧美一区二区三区情侣bbw | 欧美不卡二区 | 网站在线播放 | 中文av在线播放 | 女人脱了内裤趴开腿让男躁 | 黄色小说网站在线观看 | 高h喷水荡肉少妇爽多p视频 | 亚洲免费一区 | 日韩欧美猛交xxxxx无码 | 黄色网址哪里有 | 五月天中文字幕 | 国精产品乱码一区一区三区四区 | 伊伊综合网 | 男女男网站 | 极品探花在线播放 | 91视频最新地址 | 亚洲永久免费av | 狠狠干天天操 | 国产三区在线播放 | 欧美黑人一区 | 欧美亚洲精品一区二区 | 在线看黄色的网站 | 岛国片免费在线观看 | 久久婷婷五月综合色吧 | 国产日批视频在线观看 | 久久精品国产亚洲av高清色欲 | 午夜在线免费观看视频 | 日韩av免费在线观看 | 国语对白一区二区 | 丰满圆润老女人hd | 国产精品第六页 | 一区二区视频在线观看免费 | 性网站在线观看 | 日本老妇性生活 | 在线观看www.| 五月婷婷在线播放 | 日本中文字幕成人 | 日韩欧美福利视频 | 中文字幕一级 | 黄色美女片 | 国产视频成人 | 91社区福利 | 欧美日韩少妇精品 | 手机av在线免费观看 | 久久久91精品国产一区二区三区 | 就去吻综合 | 国产区久久 | 久久精品久 | 久久久精品视频网站 | 超碰2| 国产亚洲一区二区三区不卡 | 欧美20p| 欧美日比视频 | 午夜成人鲁丝片午夜精品 | 在线aaa| 人人干人人爽 | 美女扒开让男人桶爽 | 精品无人国产偷自产在线 | 中文字幕在线精品 | 亚洲精品一区在线 | 亚洲理伦 | 婷婷国产成人精品视频 | 欧美在线激情 | 三级在线国产 | 日本亚洲精品 |