A Simple Task CodeForces - 11D
2018-06-17 21:34:58来源:未知 阅读 ()
A Simple Task CodeForces - 11D
题意:输出一个无向图的简单环数量。简单环指无重复边的环。保证图无重边自环。
ans[i][j]表示"包含i中的点,以i中第一个点为起点,以j为终点"的路径条数。
对于某个i,枚举当前终点j(显然不能是首个点),产生一个状态。再枚举上一次终点k,如果能转移就转移。
如果i中点数大于2且j到i中第一个点有路,就认为产生了环。最后每个环记录了两遍,要除以2。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long LL; 6 LL n,m; 7 bool ok[30][30]; 8 LL ans[1000000][22]; 9 LL anss; 10 int main() 11 { 12 LL a,b,i,j,k,fi,p,pp; 13 scanf("%lld%lld",&n,&m); 14 for(i=1;i<=m;i++) 15 { 16 scanf("%lld%lld",&a,&b); 17 ok[a][b]=ok[b][a]=true; 18 } 19 for(i=1;i<(1<<n);i++) 20 { 21 pp=__builtin_popcountll(i); 22 if(pp==1) 23 { 24 //for(j=1;j<=n;j++) 25 ans[i][__builtin_ffsll(i)]=1; 26 } 27 else 28 { 29 fi=__builtin_ffsll(i); 30 for(j=1;j<=n;j++) 31 if((i&(1<<(j-1)))&&j!=fi) 32 { 33 p=i^(1<<(j-1)); 34 for(k=1;k<=n;k++) 35 if((p&(1<<(k-1)))&&ok[k][j]) 36 { 37 ans[i][j]+=ans[p][k]; 38 } 39 if(ok[j][fi]&&pp>2) anss+=ans[i][j]; 40 } 41 42 } 43 } 44 printf("%lld",anss/2); 45 return 0; 46 } 47 /* 48 http://blog.csdn.net/fangzhenpeng/article/details/49078233 49 http://blog.csdn.net/tobewhatyouwanttobe/article/details/38036129 50 http://blog.csdn.net/kk303/article/details/9621933 51 http://blog.csdn.net/dreamon3/article/details/51347151 52 */
稍稍改进了
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long LL; 6 LL n,m; 7 bool ok[30][30]; 8 LL ans[1000000][22]; 9 LL anss; 10 int main() 11 { 12 LL a,b,i,j,k,fi,p,pp; 13 scanf("%lld%lld",&n,&m); 14 for(i=1;i<=m;i++) 15 { 16 scanf("%lld%lld",&a,&b); 17 ok[a][b]=ok[b][a]=true; 18 } 19 for(i=1;i<(1<<n);i++) 20 { 21 pp=__builtin_popcountll(i); 22 fi=__builtin_ffsll(i); 23 if(pp==1) 24 ans[i][fi]=1; 25 else 26 { 27 for(j=fi+1;j<=n;j++) 28 if((i&(1<<(j-1)))) 29 { 30 p=i^(1<<(j-1)); 31 for(k=1;k<=n;k++) 32 if((p&(1<<(k-1)))&&ok[k][j]) 33 ans[i][j]+=ans[p][k]; 34 if(ok[j][fi]&&pp>2) anss+=ans[i][j]; 35 } 36 37 } 38 } 39 printf("%lld",anss/2); 40 return 0; 41 } 42 /* 43 http://blog.csdn.net/fangzhenpeng/article/details/49078233 44 http://blog.csdn.net/tobewhatyouwanttobe/article/details/38036129 45 http://blog.csdn.net/kk303/article/details/9621933 46 http://blog.csdn.net/dreamon3/article/details/51347151 47 */
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- CodeForces 1326E - Bombs 2020-03-25
- CodeForces 1320D - Reachable Strings 2020-03-20
- CodeForces 1324 - Codeforces Round #627 (Div. 3) 2020-03-13
- CodeForces 710D Two Arithmetic Progressions 2020-03-06
- CodeForces 1313D Happy New Year 2020-03-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash