BZOJ4774 修路
来源:互联网 发布:算命软件下载 编辑:程序博客网 时间:2024/04/29 16:18
同BZOJ4006
#include<iostream>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdlib>#include<cstdio>#include<map>#include<bitset>#include<set>#include<stack>#include<vector>#include<queue>using namespace std;#define MAXN 10010#define MAXM 10010#define MAXD 256#define ll long long#define eps 1e-8#define MOD 1000000007#define INF 1000000000struct vec{int to;int fro;int v;};vec mp[MAXM*2];int tai[MAXN],cnt;int n,m,p;vector<int>ps[20];int f[MAXD];int g[MAXD][MAXN];int col[MAXN],c;int t[MAXN],tot;int q[MAXN],hd,tl;bool iq[MAXN];int nc[MAXN],NC;int num[MAXN];inline void be(int x,int y,int z){mp[++cnt].to=y;mp[cnt].fro=tai[x];tai[x]=cnt;mp[cnt].v=z;}inline void bde(int x,int y,int z){be(x,y,z);be(y,x,z);}void spfa(int *g){int i,x,y;while(hd!=tl){iq[x=q[(hd%=MAXN)++]]=0;for(i=tai[x];i;i=mp[i].fro){y=mp[i].to;if(g[x]+mp[i].v<g[y]){g[y]=g[x]+mp[i].v;if(!iq[y]){iq[q[(tl%=MAXN)++]=y]=1;}}}}}int cal(){int i,j,k;int T=1<<tot;for(i=1;i<T;i++){for(j=1;j<=n;j++){g[i][j]=INF;if(nc[j]==NC){if(i==(1<<num[j]-1)){g[i][j]=0;}}for(k=i&i-1;k;k=i&k-1){g[i][j]=min(g[i][j],g[k][j]+g[i^k][j]);}if(g[i][j]!=INF){iq[q[(tl%=MAXN)++]=j]=1;}}spfa(g[i]);}int re=INF;for(i=1;i<=n;i++){re=min(re,g[T-1][i]);}return re;}int main(){int i,j,k,x,y,z;scanf("%d%d%d",&n,&m,&p);for(i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);bde(x,y,z);}for(i=1;i<=p;i++){ps[i].push_back(i);ps[i].push_back(n-i+1);}for(i=1;i<=p;i++){if(ps[i].size()>1){col[++c]=i;}}int C=1<<c;for(i=1;i<C;i++){tot=0;NC++;for(j=1;j<=C;j++){if(i&(1<<j-1)){for(k=0;k<ps[col[j]].size();k++){tot++;nc[ps[col[j]][k]]=NC;num[ps[col[j]][k]]=tot;}}}f[i]=cal();}for(i=1;i<C;i++){for(j=i&i-1;j;j=i&j-1){f[i]=min(f[i],f[j]+f[i^j]);}}printf("%d\n",f[C-1]==INF?-1:f[C-1]);return 0;}/*10 20 46 5 16 9 49 4 29 4 106 1 22 3 67 6 105 7 19 7 25 9 101 6 84 7 45 7 12 6 910 10 68 7 210 9 101 2 410 1 89 9 7*/
0 0
- BZOJ4774 修路
- [BZOJ4774]修路
- [BZOJ4774]修路(斯坦纳树+dp)
- 修路
- 修路方案
- 1046修路
- CSU_1023_修路
- 修路方案
- 修路方案
- [JZOJ4629] 修路
- 【JZOJ4629】修路
- 山区修路
- 山区修路
- ACM;修路;3星;
- HDU 4081 秦始皇修路
- 修路方案 nyoj
- NYOJ118 修路方案
- 【pongo】【修路】【个人想法】
- [c#]喜马拉雅FM音频批量下载器开发手记
- Recorder︱图像特征检测及提取算法、基本属性、匹配方法
- BP Neural Network
- Caused by: java.io.NotSerializableException: com.cn.entity.Users
- HDU P2098 JAVA
- BZOJ4774 修路
- [Android] Suggestion: use tools:overrideLibrary="" to force usage
- Android系统各种FLAG,常量 翻译收集
- java中栈的应用-判断分隔符是否合理
- Linux进程调度机制
- sign_and_send_pubkey: signing failed: agent refused operation
- Xcode多个子工程结合联编开发SDK
- 二叉树的下一个节点
- gzip、长缓存、 entity tag 的使用方法