POJ 3268 Silver Cow Party(dij+邻接矩阵)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 3268 Silver Cow Party(dij+邻接矩阵)相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; const int INF=10e8; const int MAXN=1010; int k,minn; int cost[MAXN][MAXN],lowcost[MAXN],lc[MAXN]; bool vis[MAXN]; void Reverse(int n,int cost[][MAXN]) { int t; for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) { t=cost[i][j]; cost[i][j]=cost[j][i]; cost[j][i]=t; } } } void dij(int n,int st) { for(int i=1;i<=n;i++) lowcost[i]=INF,vis[i]=0; lowcost[st]=0; for(int j=1;j<=n;j++) { k=-1,minn=INF; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[i]<minn) { minn=lowcost[i]; k=i; } if(k==-1) break; vis[k]=1; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]) lowcost[i]=lowcost[k]+cost[k][i]; } } int main() { int n,m,x; scanf("%d%d%d",&n,&m,&x); int a,b,t; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cost[i][j]=(i==j)?0:INF; while(m--) { scanf("%d%d%d",&a,&b,&t); cost[a][b]=t; } dij(n,x); for(int i=1;i<=n;i++) lc[i]=lowcost[i]; Reverse(n,cost); dij(n,x); int maxi=0; for(int i=1;i<=n;i++) { lc[i]+=lowcost[i]; if(lc[i]>maxi) maxi=lc[i]; } printf("%d\n",maxi); return 0; }
以上是关于POJ 3268 Silver Cow Party(dij+邻接矩阵)的主要内容,如果未能解决你的问题,请参考以下文章
POJ 3268 Silver Cow Party (Dijkstra)