POJ3311

来源:互联网 发布:mac装win10设置电源 编辑:程序博客网 时间:2024/06/05 04:48

//从这道题就可以看出状态DP的效率了(虽然是和弗洛伊德相比)

//主要是因为他N最多达到10,所以可以用!要是在高一点估计就要TLE了,还是安心的用状态DP吧

#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;int main(){   int n,a[11],map[11][11],i;   for(i=0;i<=10;i++)   {        a[i]=i;   }   while(scanf("%d",&n)!=EOF,n)   {   int j,k;   for(i=0;i<=n;i++)   {   for(j=0;j<=n;j++)   {   cin>>map[i][j];   }   }   for(i=0;i<=n;i++)   {   for(j=0;j<=n;j++)   {   for(k=0;k<=n;k++)   {   if(map[j][k]+map[k][i]<map[j][i])   map[j][i]=map[j][k]+map[k][i];   }   }   }   //for(i=1;i<=   int ans=9999999;   while(next_permutation(a,a+n+1))//对数组的全排列;   {   int cnt=0;   //for(i=0;i<=n;i++)  // cout<<a[i]<<" ";   //cout<<endl;           for(i=1;i<=n;i++)   {   //cout<<a[i]<<" ";             cnt+=map[a[i-1]][a[i]];// cout<<map[a[i-1]][a[i]]<<" ";   }      cnt+=map[a[n]][a[0]];  // cout<<map[n][0]<<" ";   //cout<<endl;   ans=ans>cnt?cnt:ans;   }   cout<<ans<<endl;       }}
1875MS//

如果是用状态DP的话可以达到0MS!!!!!!!!!;


0 0
原创粉丝点击