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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

POJ 1904 King's Quest(强连通图)题解

發布時間:2024/4/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 1904 King's Quest(强连通图)题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:n個王子有自己喜歡的ki個公主,有n個公主,每個王子只能娶一個自己喜歡的公主且不能綠別的王子。現在給你一種王子娶公主的方案,并且保證這種方案是正確的。請你給出,每個王子能娶哪些公主,要求娶這些公主時,其他王子也能娶到公主。

思路:還以為是完全匹配,直接暴力匹配顯然TLE了。正解是縮點...我們把每個王子指向自己喜歡的公主們,然后把給定的方案中的公主指向自己嫁給的王子,然后縮點,同一個點中王子喜歡的公主都能娶。因為每個王子指向的肯定都是公主(至少兩個),公主指向的肯定都是王子,所以想要形成一個強連通圖這個圖中王子公主數量肯定是相同的,那么假如王子選擇一個自己喜歡的公主,那么這個圖中的其他的王子可以選擇其他的公主,顯然肯定能完全匹配。

代碼:

#include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #include<string> #include<cstdio> #include<cstring> #include<sstream> #include<iostream> #include<algorithm> typedef long long ll; using namespace std; const int maxn = 4000 + 10; const int MOD = 1e9 + 7; const int INF = 0x3f3f3f3f; int head[maxn], ans[maxn], tot; struct Edge{int to, next; }edge[maxn * maxn]; int low[maxn], dfn[maxn], Stack[maxn], belong[maxn]; int index, top, scc; bool instack[maxn]; void addEdge(int u, int v){edge[tot].to = v;edge[tot].next = head[u];head[u] = tot++; } void tarjan(int u){int v;low[u] = dfn[u] = ++index;Stack[top++] = u;instack[u] = true;for(int i = head[u]; i != -1; i = edge[i].next){v = edge[i].to;if(!dfn[v]){tarjan(v);if(low[u] > low[v]) low[u] = low[v];}else if(instack[v] && low[u] > dfn[v]){low[u] = dfn[v];}}if(low[u] == dfn[u]){scc++;do{v = Stack[--top];instack[v] = false;belong[v] = scc;}while(v != u);} } void solve(int n){memset(dfn, 0, sizeof(dfn));memset(instack, false, sizeof(instack));index = scc = top = 0;for(int i = 1; i <= n; i++){if(!dfn[i])tarjan(i);} } void init(){tot = 0;memset(head, -1, sizeof(head)); } int main(){int n;while(~scanf("%d", &n)){int k, tmp;init();for(int i = 1; i <= n; i++){scanf("%d", &k);while(k--){scanf("%d", &tmp);addEdge(i, tmp + n);}}for(int i = 1; i <= n; i++){scanf("%d", &tmp);addEdge(tmp + n, i);}solve(2 * n);int ret;for(int u = 1; u <= n; u++){ret = 0;for(int i = head[u]; i != -1; i = edge[i].next){int v = edge[i].to;if(belong[v] == belong[u]){ans[ret++] = v - n;}}sort(ans, ans + ret);printf("%d", ret);for(int i = 0; i < ret; i++){printf(" %d", ans[i]);}printf("\n");}}return 0; }

?

轉載于:https://www.cnblogs.com/KirinSB/p/10464958.html

總結

以上是生活随笔為你收集整理的POJ 1904 King's Quest(强连通图)题解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色一级大片免费版 | 国产精品一区二区在线观看 | 一级少妇精品久久久久久久 | 色欲AV无码精品一区二区久久 | 深夜毛片 | 免费看的av片 | 欧美亚洲国产精品 | 日韩精品一区二区三区四区五区 | 欧美一区二区三区黄片 | 日本久久一级片 | 九九九九热 | 国产亚洲欧美在线精品 | 欧美日韩视频在线播放 | japanesehdxxxx| 久久免费高清 | 青青草中文字幕 | 最近中文字幕免费 | aaaaaa毛片| 欧美亚韩一区二区三区 | 色999视频| av色噜噜| www.狠狠爱| 亚洲欧美偷拍视频 | 日韩中文字幕亚洲精品欧美 | 少妇久久久久久久久久 | 免费成人av网址 | 亚洲一区久久 | 午夜剧场福利 | 成人黄色免费在线观看 | 天堂а在线中文在线新版 | 久久久91精品国产一区二区三区 | 国产精品视频一区二区三区, | aaa大片十八岁禁止 中文字幕亚洲在线观看 | 24小时日本在线www免费的 | 91精品久久久久久久久中文字幕 | 日本内谢少妇xxxxx少交 | 草久久久 | 中文字幕一区二区三区人妻在线视频 | 日韩免费三级 | 中文字幕人妻精品一区 | 影音先锋色小姐 | 久久色av| 国产99久久 | 青青草原一区二区 | 日本在线天堂 | 99re最新| 亚洲av少妇一区二区在线观看 | 97超碰网| 国产成人免费在线 | 天天看天天摸 | 亚洲第七页 | 成人日韩欧美 | 国内毛片视频 | 海角社区登录 | 国产曰肥老太婆无遮挡 | 香蕉视频在线免费 | 国产成人精品久久二区二区91 | 狠狠搞视频 | 亚洲视频精选 | www.色播.com | 波多野结衣在线免费视频 | 精品人妻少妇一区二区 | 麻豆短视频 | 精品小视频在线观看 | 亚洲女同av | 欧美一级特黄视频 | 欧美三级网站 | 欧美日韩中文字幕一区二区三区 | 精品福利在线视频 | 狠狠操操 | 欧美粉嫩videosex极品 | 在线免费三级 | 麻豆蜜桃视频 | 在线观看成人av | 美女一区二区三区视频 | 国产欧美一区二区三区精华液好吗 | 成人3d动漫一区二区三区91 | 波多野结衣三区 | 久久精品一区二 | 在线激情小视频 | 91麻豆精品国产91久久久久久 | 1024国产在线 | 国产人妻人伦精品1国产 | av中字在线| 午夜av免费看 | 色婷婷狠 | 欧美成人激情在线 | japan高清日本乱xxxxx | 91亚洲综合 | 久久免费毛片 | 欧美视频久久久 | 亚洲午夜一区二区三区 | 亚洲精品污一区二区三区 | 久久久久久电影 | 粉嫩av国产一区二区三区 | 成人午夜免费在线 | 樱井莉亚av| 欧美日韩综合精品 | 欧美日韩高清一区二区 |