CodeForces 11D(狀壓DP 求圖中環的個數)

Given a simple graph, output the number of simple cycles in it. A simple cycle is a cycle with no repeated vertices or edges.

Input

The first line of input contains two integers?n?and?m?(1?≤?n?≤?19,?0?≤?m) – respectively the number of vertices and edges of the graph. Each of the subsequent?mlines contains two integers?a?and?b, (1?≤?a,?b?≤?n,?a?≠?b) indicating that vertices?aand?b?are connected by an undirected edge. There is no more than one edge connecting any pair of vertices.

Output

Output the number of cycles in the given graph.

Example

Input
4 6
1 2
1 3
1 4
2 3
2 4
3 4
Output
7

Note

The example graph is a clique and contains four cycles of length 3 and three cycles of length 4.

?1-2-3 2-3-4 1-3-4 1-2-4 1-2-3-4 1-2-4-3 1-4-2-3

題意:給出一個圖的點數和邊數輸出這個圖中有幾個環.

題解:這道題可以很容易想到狀壓,因為數據也只有19(orz).用sta的二進制表示已經有幾個點在這個狀態中,那怎么表示形成環呢?只需要找到一個當前狀態中的點,它神奇的與前面的某一個點有一條邊連著,那么說明肯定能構成環,可以為總答案做貢獻.如果不能,那么就為下一個狀態提供個數.不過由于是無向圖.所以兩個點也會被認為成環(兩個點構成環的個數為邊數),并且每個更大的環都會被計算兩次,所以最后要減掉.然后就搞定了.

?

代碼:

?

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;long long dp[1<<20][20],ans=0;
vector<int> e[20];int lowbit(int x)
{return x&(-x);
}int main()
{int n,m,f,t;scanf("%d%d",&n,&m);for(int i=0;i<m;i++){scanf("%d%d",&f,&t);e[f-1].push_back(t-1);e[t-1].push_back(f-1);}for(int i=0;i<n;i++){dp[1<<i][i]=1;}for(int sta=1;sta<(1<<n);sta++){for(int i=0;i<n;i++){if(dp[sta][i]){for(int k=0;k<e[i].size();k++){int j=e[i][k];if(lowbit(sta)>(1<<j)){continue;}if(sta&(1<<j)){if(lowbit(sta)==(1<<j)){ans+=dp[sta][i];}}else{dp[sta|(1<<j)][j]+=dp[sta][i];          }}}}ans=(ans-m)/2;printf("%lld\n",ans);return 0;
}

?

?

?

?

?每天刷題,身體棒棒!

?

轉載于:https://www.cnblogs.com/stxy-ferryman/p/7637383.html

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

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

相關文章

vue插槽的使用(slot)

插槽 該頁面假設你已經閱讀過了組件基礎。如果你還對組件不太了解&#xff0c;推薦你先閱讀它。 插槽內容 Vue 實現了一套內容分發的 API&#xff0c;這套 API 基于當前的 Web Components 規范草案&#xff0c;將 <slot> 元素作為承載分發內容的出口。 它允許你像這樣合成…

圖片與二進制流轉換

#region//圖片轉換為二進制流 public void PictureToBinaryStream() { //獲取當前程序運行路徑 string path Application.StartupPath; //拼接成測試圖片路徑 string fullPath path "\\images\\test.png"; //初始化類 Bitmap bmp…

仿MIUI彈性列表

前言 最近去小米之家體驗了下小米9&#xff0c;發現MIUI有一個挺特別的列表動畫效果&#xff0c;在系統上的各種應用上都能見到它的身影。 網上查了下&#xff0c;小米早在幾個系統版本前就有這個&#xff0c;網上也有了實現這個效果的控件庫。實現方法大同小異&#xff0c;大多…

10、angular的全部api

1、lowercase var app angular.module(myApp, []);app.controller(myCtrl, function($scope) { console.log(angular.lowercase(AbCdEf))}); 2、uppercase var app angular.module(myApp, []);app.controller(myCtrl, function($scope) { console.log(angular.uppercas…

JavaScript快速入門-ECMAScript本地對象(String)

一、String對象 String對象和python中的字符串一樣&#xff0c;也有很多方法&#xff0c;這些方法大概分為以下種類&#xff1a; 1、索引和查找 1、charAt() 返回指定位置的字符。 2、charCodeAt() 返回指定位置的字符的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數。 …

8、angular的select

1、數據源為數組 x for x in names第一個x代表在下拉框內顯示的數據 第二個x指的是在names里數據 <!DOCTYPE html><html><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0…

ZOJ4116 Game on a Graph

給一個含n個點 m條邊的連通圖 把k個人分成兩組 輪流拿掉一條邊 當取走一條邊后圖不再連通 這個隊就輸了 水題啦 邊為n-1時 下一個拿掉邊的那個組就輸啦 AC代碼&#xff1a; 1 #include<bits/stdc.h>2 using namespace std;3 typedef long long ll;4 typedef unsigned lon…

集美大學1414班軟件工程個人作業2——個人作業2:APP案例分析

一、作業鏈接 個人作業2&#xff1a;APP案例分析 二、博文要求 通過分析你選中的產品&#xff0c;結合閱讀《構建之法》&#xff0c;寫一篇隨筆&#xff0c;包含下述三個環節的所有要求。 第一部分 調研&#xff0c; 評測 下載軟件并使用起來&#xff0c;描述最簡單直觀的個人第…

全局eslint不生效的處理

react項目里能用上 eslint 的 airbnb 規范真是的&#xff0c;對自己的編碼有很好的幫助&#xff0c;不經可以養成良好的代碼風格&#xff0c;而且還能檢測出 state或者變量 是否 使用過&#xff0c; 然而&#xff0c;所在團隊的小伙伴們&#xff0c;卻并未使用&#xff0c;或者…

IP通信基礎

源端口和目的端口字段--各占2字節。端口是傳輸層與應用層的服務接口。傳輸層的復用和分用功能都要通過端口才能實現。序號字段--占4字節。TCP連接中傳送的數據流中的每一個字節都編上一個序號。序號字段的值則指的是本報文段所發送的數據的第一個字節的序號轉載于:https://www.…

回溯算法 ------回溯算法的幾個例子

1.回溯算法的小結 2.回溯算法的幾個例子 2.1 ------ 4后問題 搜索空間&#xff1a; 2.2 ------01背包問題 01背包問題的算法設計 01背包問題的實例分析 01背包問題的搜索空間 2.3 ------- 貨郎問題 貨郎問題實例 貨郎問題的搜索空間 最后再來個小結 轉載于:https://www.cnb…

Phaserjs V2的state狀態解析及技巧

用phaserjs開發了好多游戲了&#xff0c;但是對phaser還是了解不深&#xff0c;只知道怎么去用&#xff0c;今天就特意花點時間研究下phaser的狀態管理到底是怎么回事。 首先&#xff0c;new Phaser.Game&#xff0c;以下是Phaser.Game的部分源碼&#xff1a; Phaser.Game fun…

JAVA_出神入化學習路線大綱

注&#xff1a;參考GitHub上的項目&#xff08;toBeTopJavaer&#xff09;總結出來 也是自己的目標。 基礎篇&#xff1a;https://www.cnblogs.com/blogzcc/p/10899066.html 進階篇&#xff1a;https://www.cnblogs.com/blogzcc/p/10899841.html 高級篇&#xff1a;https://www…

Ubuntu安裝并使用sogou輸入法

1.下載搜狗輸入法的安裝包 下載地址為&#xff1a;http://pinyin.sogou.com/linux/ ,如下圖&#xff0c;要選擇與自己系統位數一致的安裝包&#xff0c;我的系統是64位&#xff0c;所以我下載64位的安裝包 2.按鍵CtrAltT打開終端&#xff0c;輸入以下命令切換到下載文件夾: [ht…

面試題之web

1. django和flask框架的區別&#xff1f; django&#xff1a;大而全的全的框架&#xff0c;重武器&#xff1b;內置很多組件&#xff1a;ORM、admin、Form、ModelForm、中間件、信號、緩存、csrf等 flask: 微型框架、可擴展強&#xff0c;如果開發簡單程序使用flask比較快速&am…

python 常用鏡像

pip鏡像https://pypi.tuna.tsinghua.edu.cn/simplehttps://pypi.douban.io.com/simple pip install python-qt -i https://pypi.tuna.tsinghua.edu.cn/simple清華開源軟件鏡像&#xff1a;&#xff08;anaconda&#xff09;https://mirrors.tuna.tsinghua.edu.cn/https://mirro…

flutter 幾秒前, 幾分鐘前, 幾小時前, 幾天前...

Show me the code!!! class RelativeDateFormat {static final num ONE_MINUTE 60000;static final num ONE_HOUR 3600000;static final num ONE_DAY 86400000;static final num ONE_WEEK 604800000;static final String ONE_SECOND_AGO "秒前";static final St…

CMake 使用筆記

記錄 CMake 相關知識。 Prelude&#xff1a;讀文檔一定要有耐心&#xff01; 問題一 CLion&#xff1a; CMakeLists.txt 中 set(CMAKE_CXX_FLAGS -Wall) 不起作用 Solution: 改用 target_compile_options(main PUBLIC -Wall) Reference:target_compile_optionsGCC: Options to …

Docker 完全指南

Docker 最初 dotCloud 公司內部的一個業余項目Docker 基于 Go 語言Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案Docker 的基礎是 Linux 容器&#xff08;LXC&#xff09;等技術Docker 容器的啟動可以在秒級實現&#xff0c;這相比傳統的虛擬機方式要快得多Docker 對…

NOIP 2016【蚯蚓】

好吧&#xff0c;我承認我是個智障…… 這道題一眼看上去就是個堆&#xff0c;然而實際上有單調性。 注意到&#xff0c;如果 \(q 0\) 的話&#xff0c;將蚯蚓的左右兩邊分開丟進兩個隊列中&#xff0c;則兩個隊列都是單調不增的&#xff0c;因為每次取出的蚯蚓長度單調不增。…