Ural 1416 Confidential
2013-07-14 21:26
148 查看
http://acm.timus.ru/problem.aspx?space=1&num=1416
又是次小生成树啊。
AC Code
又是次小生成树啊。
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; #define maxn 505 #define inf (int)(1<<31-1) int s[maxn][maxn],f[maxn][maxn],lowcost[maxn],closest[maxn],flag; void init(int n) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ f[i][j]=-inf; s[i][j]=inf; } } int mst(int n) { int k,ans=0; for(int i=1;i<=n;i++){ lowcost[i]=s[1][i]; closest[i]=1; } lowcost[1]=-1; for(int i=1;i<n;i++){ int min=inf; for(int j=1;j<=n;j++) if(lowcost[j]!=-1&&min>lowcost[j]){ min=lowcost[j]; k=j; } if(min==inf) flag=1; ans+=min; //printf("%d**\n",ans); for(int j=1;j<=n;j++) if(lowcost[j]==-1){ f[j][k]=max(f[j][closest[k]],lowcost[k]); f[k][j]=f[j][k]; } lowcost[k]=-1; s[closest[k]][k]=inf; s[k][closest[k]]=inf; for(int j=1;j<=n;j++) if(lowcost[j]!=-1&&lowcost[j]>s[k][j]){ lowcost[j]=s[k][j]; closest[j]=k; } } return ans; } int deal(int n) { int ans=inf; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(s[i][j]!=inf) ans=min(ans,s[i][j]-f[i][j]); return ans; } int main() { int n,m; while(~scanf("%d%d",&n,&m)){ init(n); while(m--){ int a,b,c; scanf("%d%d%d",&a,&b,&c); s[a][b]=c; s[b][a]=c; } flag=0; int ans=mst(n); if(flag==1){ printf("Cost: -1\nCost: -1\n"); continue; } int s1=deal(n); if(s1==inf){ printf("Cost: %d\nCost: -1\n",ans); } else printf("Cost: %d\nCost: %d\n",ans,ans+s1); } return 0; }
AC Code
相关文章推荐
- Ural 1416 Confidential,次小生成树
- URAL - 1416 Confidential (最小生成树与次小生成树)
- URAL 1416 Confidential(次小生成树)
- URAL 1416 Confidential --最小生成树与次小生成树
- URAL 1416 Confidential
- Confidential----Ural_1416----次小生成树
- URAl 1416 Confidential【次小生成树】
- Ural 1416 Confidential(最小生成树+次小生成树)
- URAL 1416 Confidential
- Ural 1416 Confidential
- [URAL1416 Confidential]
- URAL - 1416 Confidential(次小生成树)
- URAL 1416 Confidential <最小生成数和次小生成数>
- ural 1416 Confidential 次小生成树
- URAL 1416 Confidential --最小生成树与次小生成树
- ural 1416 Confidential 次小生成树
- URAL-1416 (典型的次小生成树)
- 1416. Confidential
- URAL 1416 Confidentia [次小生成树]
- ural 1935 Tears of Drowned