Light OJ 1406 Assassin`s Creed 減少國家DP+支撐點甚至通縮+最小路徑覆蓋

標題來源:Light OJ 1406 Assassin`s Creed

意甲冠軍:向圖 派出最少的人經過全部的城市 而且每一個人不能走別人走過的地方

思路:最少的的人能夠走全然圖 明顯是最小路徑覆蓋問題 這里可能有環 所以要縮點 可是看例子又發現 一個強連通分量可能要拆分 n最大才15 所以就狀態壓縮?

將全圖分成一個個子狀態 每一個子狀態縮點 求最小路徑覆蓋 這樣就攻克了一個強連通分量拆分的問題 最后狀態壓縮DP求解最優值

#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
const int maxn = 16;
vector <int> G[maxn], G2[maxn];
int dp[1<<maxn];
int pre[maxn], low[maxn], sccno[maxn];
int clock, scc_cnt;
int n, m;
stack <int> S;
int a[maxn][maxn];
int b[maxn][maxn];void dfs(int u, int x)
{pre[u] = low[u] = ++clock;S.push(u);for(int i = 0; i < G[u].size(); i++){int v = G[u][i];if(!(x&(1<<v)))continue;if(!pre[v]){dfs(v, x);low[u] = min(low[u], low[v]); }else if(!sccno[v]){low[u] = min(low[u], pre[v]);}}if(pre[u] == low[u]){scc_cnt++;while(1){int x = S.top(); S.pop();sccno[x] = scc_cnt;if(x == u)break;}}
}
int find_scc(int x)
{memset(sccno, 0, sizeof(sccno));memset(pre, 0, sizeof(pre));scc_cnt = 0, clock = 0;for(int i = 0; i < n; i++){if(x&(1<<i) && !pre[i])dfs(i, x);}return scc_cnt;
}int y[maxn];
bool vis[maxn];bool xyl(int u)
{for(int i = 0; i < G2[u].size(); i++){int v = G2[u][i];if(vis[v])continue;vis[v] = true;if(y[v] == -1 || xyl(y[v])){y[v] = u;return true;}}return false;
}
int match()
{int ans = 0;memset(y, -1, sizeof(y));for(int i = 1; i <= scc_cnt; i++){memset(vis, false, sizeof(vis));if(xyl(i))ans++;}return scc_cnt-ans;
}
int main()
{int cas = 1;int T;scanf("%d", &T);while(T--){scanf("%d %d", &n, &m);for(int i = 0; i < n; i++)G[i].clear();memset(a, 0, sizeof(a));while(m--){int u, v;scanf("%d %d", &u, &v);u--;v--;G[u].push_back(v);a[u][v] = 1;}dp[0] = 0;//puts("sdf");for(int i = 1; i < (1<<n); i++){//memset(b, 0, sizeof(b));find_scc(i);for(int j = 0; j <= n; j++)G2[j].clear();for(int j = 0; j < n; j++)for(int k = 0; k < n; k++)if(a[j][k] && sccno[j] && sccno[k] && sccno[j] != sccno[k])G2[sccno[j]].push_back(sccno[k]);dp[i] = match();}//puts("sdf");for(int s = 1; s < (1<<n); s++){for(int i = s; i; i = s&(i-1)){dp[s] = min(dp[s], dp[s^i] + dp[i]);}}printf("Case %d: %d\n", cas++, dp[(1<<n)-1]);}return 0;
}



轉載于:https://www.cnblogs.com/blfshiye/p/4594571.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bootstrap-表單控件——單選按鈕水平排列

1.運行效果如圖所示2.實現代碼如下<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>表單控件——單選按鈕水平排列</title><!-- 最…

python中memoryerror_解決python報錯MemoryError

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術人對外發布原創技術內容的最大平臺&…

MongoDB使用小結:一些常用操作分享

MongoDB使用小結&#xff1a;一些常用操作分享 本文整理了一年多以來我常用的MongoDB操作&#xff0c;涉及mongo-shell、pymongo&#xff0c;既有運維層面也有應用層面&#xff0c;內容有淺有深&#xff0c;這也就是我從零到熟練的歷程。 MongoDB的使用之前也分享過一篇&#x…

【論文閱讀】Illuminating Pedestrians via Simultaneous Detection Segmentation

論文來源 ICCV2017arXiv reportgithub代碼(caffe-matlab) 本文的主要問題是行人檢測。作者探討了如何將語義分割應用在行人檢測上&#xff0c;提高檢測率&#xff0c;同時也不損壞檢測效率。作者提出了一種語義融合網絡&#xff08;segmentation infusion networks&#xff0…

跨域獲取json電商數據

url:http://www.darlingbank.com/cutpage/index.php/promote/edit/getfun/json/源碼&#xff1a; <ul class"cf" dataurl"http://www.paipai.com/sinclude/xml/tjw/tjw2014/tjw4/tjw179255804475.js" commlen"4" commsta"1" commtp…

Python ORM框架之 Peewee入門

之前在學Django時&#xff0c;發現它的模型層非常好用&#xff0c;把對數據庫的操作映射成對類、對象的操作&#xff0c;避免了我們直接寫在Web項目中SQL語句&#xff0c;當時想&#xff0c;如果這個模型層可以獨立出來使用就好了&#xff0c;那我們平臺操作數據庫也可以這么玩…

天聯高級版客戶端_金萬維天聯高級版服務器安裝配置全流程以及客戶端登錄流程...

今天下午&#xff0c;有一個使用千江軟件的用戶&#xff0c;他想實現千江軟件的異地訪問&#xff0c;經過他朋友也是金萬維天聯高級版的客戶的介紹&#xff0c;推薦我們幫他安裝天聯高級版&#xff0c;從而實現千江軟件的異地訪問&#xff0c;千江軟件本地訪問界面如下&#xf…

[C#]async和await刨根問底

上一篇隨筆留下了幾個問題沒能解決&#xff1a; 調用IAsyncStateMachine.MoveNext方法的線程何時發起的&#xff1f; lambda的執行為何先于MoveNext方法&#xff1f; 后執行的MoveNext方法做了些什么事情&#xff1f; 那么今天就來嘗試解決它們吧~PS: 本文中部分代碼來自上一篇…

模仿QQ截圖片

兩個picturebox,一個放圖片完整代碼如下using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Xml; namespace T…

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found錯誤的解決

轉載自&#xff1a;http://www.cnblogs.com/weinyzhou/p/4983306.html 升級cmake時&#xff0c;提示“Error when bootstrapping CMake:Problem while running initial CMake”&#xff0c;第二次運行./bootstrap時&#xff0c;直接的給出了錯誤原因&#xff1a; [rootloc…

Spring中Bean的定義繼承

以下內容引用自http://wiki.jikexueyuan.com/project/spring/bean-definition-inheritance.html&#xff1a; Bean定義繼承 bean定義可以包含很多的配置信息&#xff0c;包括構造函數的參數&#xff0c;屬性值&#xff0c;容器的具體信息例如初始化方法&#xff0c;靜態工廠方法…

python實時連接oracle_Python連接Oracle

Python連接Oracle當前環境&#xff1a;Linux Centos 71. 下載安裝包cx_Oracle由于我本地Python版本是2.7,所以選擇是2.7版本wget https://pypi.python.org/packages/e1/18/00987c6a9af9568ee87d1fcba877407684a3f1b87515e5eb82d5d5acb9ff/cx_Oracle-6.0rc1-py27-1.x86_64.rpm#m…

C語言字符串函數大全

轉載自http://www.360doc.com/content/08/0723/22/26860_1462024.shtml# C語言字符串函數大全 函數名: stpcpy 功能: 拷貝一個字符串到另一個 用法: char *stpcpy(char *destin, char *source); 程序例: #include<stdio.h> #include<string.h> int main(void) { ch…

Makefile中 -I -L -l區別

轉載自&#xff1a;http://blog.csdn.net/davion_zhang/article/details/41805641 我們用gcc編譯程序時&#xff0c;可能會用到“-I”&#xff08;大寫i&#xff09;&#xff0c;“-L”&#xff08;大寫l&#xff09;&#xff0c;“-l”&#xff08;小寫l&#xff09;等參數&am…

PLT redirection through shared object injection into a running process

PLT redirection through shared object injection into a running process

python電腦版軟件下載_Python for windows

Python是一門跨平臺的腳本語言,Python規定了一個Python語法規則,實現了Python語法的解釋程序就成為了Python的解釋器,我們用的比較多的是C版本的Python,也就是使用C語言實現的Python解釋器,除此之外還有使用Java實現的Jython和使用.NET實現的IronPython,這些實現可以使Python用…

Struts優缺點

跟Tomcat、Turbine等諸多Apache項目一樣&#xff0c;是開源軟件&#xff0c;這是它的一大優點。使開發者能更深入的了解其內部實現機制。 Struts開放源碼框架的創建是為了使開發者在構建基于Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技術的Web應用時更加容易…

由Google Protocol Buffer的小例子引起的g++編譯問題

問題 學習 Google Protocol Buffer 的使用和原理時&#xff0c;提供了一個小例子&#xff0c;講述了protobuf的使用方法。 假如已經有了如下文件&#xff1a; 其中writer.cpp如下&#xff1a;#include "lm.helloworld.pb.h" #include<iostream> #include<…

用python編寫表達式求值_用Python3實現表達式求值

Problem Description yizhen has no girlfriend due to his stupid brain that he even can’t solve a simple arithmetic roblem. Can you help him If you solve it and tell him the result, then he can find his lovers! So beautiful! Input The input一、題目描述請用 …

the first day

開博第一天&#xff0c;從此記錄我生活學習的點滴&#xff0c;加油轉載于:https://www.cnblogs.com/fkissx/p/3702132.html