斯坦纳生成树
来源:互联网 发布:android编程权威指南 编辑:程序博客网 时间:2024/04/27 15:12
dp版
#include<cstdio>#include<cstring>#include<vector>#include<algorithm>#include<queue>using namespace std;const int N=100;const int M=2000+10;const int INF=1e8;int dp[N][1<<10],s[N];int dis[N][N];int n,m,k;void floyd(){ for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); } } }}void _stn(int ed){ floyd(); for(int y=0;y<ed;y++){ for(int x=1;x<=n;x++)dp[x][y]=INF; } for(int i=1;i<=n;i++){ if(i<=k)s[i]=1<<(i-1),dp[i][s[i]]=0; else if(i>=n-k+1)s[i]=1<<(n-i+k),dp[i][s[i]]=0; else s[i]=0; } for(int y=0;y<ed;y++){ for(int x=1;x<=n;x++){ for(int i=(y-1)&y;i;i=(i-1)&y){ dp[x][y]=min(dp[x][y],dp[x][i|s[x]]+dp[x][(y-i)|s[x]]); } } for(int x=1;x<=n;x++){ for(int x1=1;x1<=n;x1++){ dp[x1][y|s[x1]]=min(dp[x1][y|s[x1]],dp[x][y]+dis[x][x1]); } } }}
spfa版
//hdu 4085int vis[N][1<<10];int dp[N][1<<10],s[N];queue<int> qq;int update(int x,int y,int w){ if(dp[x][y]>w){ dp[x][y]=w;return 1; } return 0;}void spfa(){ while(!qq.empty()){ int x=qq.front()/10000,y=qq.front()%10000; vis[x][y]=0; qq.pop(); for(int i=head[x];i!=-1;i=e[i].next){ int v=e[i].v,w=e[i].w; if(update(v,y|s[v],dp[x][y]+w)&&y==(y|s[v])&&!vis[v][y]){ vis[v][y]=1,qq.push(v*10000+y); } } }}int n,m,k;void _stn(int ed){ for(int y=0;y<ed;y++){ for(int x=1;x<=n;x++)dp[x][y]=INF; } for(int i=1;i<=n;i++){ if(i<=k)s[i]=1<<(i-1),dp[i][s[i]]=0; else if(i>=n-k+1)s[i]=1<<(n-i+k),dp[i][s[i]]=0; else s[i]=0; } memset(vis,0,sizeof(vis)); for(int y=0;y<ed;y++){ for(int x=1;x<=n;x++){ for(int i=(y-1)&y;i;i=(i-1)&y){ dp[x][y]=min(dp[x][y],dp[x][i|s[x]]+dp[x][(y-i)|s[x]]); } if(dp[x][y]<INF){ qq.push(x*10000+y);vis[x][y]=1; } } spfa(); }}
0 0
- 斯坦纳生成树
- 斯坦纳树 hdu4085
- 斯坦纳树
- 斯坦纳树
- HDU4085【斯坦纳树】
- 斯坦纳树
- BZOJ4006【斯坦纳树】
- 【模板】斯坦纳树
- 斯坦纳树问题
- 【模板】斯坦纳树
- 斯坦纳树
- HDU4085 斯坦纳树
- hdu6060斯坦纳树
- 斯坦纳树 Steiner Tree
- hdu 4085 斯坦纳树
- HDU 4085 斯坦纳树
- HDU 4085 斯坦纳树
- 斯坦纳树问题及其推广
- linux 中定时器的实现机制
- Activity 启动模式
- adb 不是内部或外部命令,也不是可运行的内部程序
- 软中断,tasklet,工作队列
- ASP.NET MVC 5 - 视图
- 斯坦纳生成树
- html的meta详解
- java零基础
- Traffic Analysis of an SSL/TLS Session by Álvaro Castro-Castilla
- 你不一定懂的cpu显示信息
- 网络流
- linux命令
- ASP.NET MVC 5 - 将数据从控制器传递给视图
- ALS(python pyspark)