记录编号 289635 评测结果 AAAAAAAAAA
题目名称 P服务点设置 最终得分 100
用户昵称 GravatarAntiLeaf 是否通过 通过
代码语言 C++ 运行时间 0.247 s
提交时间 2016-08-05 12:25:07 内存使用 0.34 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. const int maxn=110;
  6. int n,m,p,x,y,dis[maxn][maxn],tmp,ds,ans=0x7ffffff;
  7. bool used[maxn],b[maxn];
  8. int main(){
  9. freopen("djsc.in","r",stdin);
  10. freopen("djsc.out","w",stdout);
  11. scanf("%d%d%d",&n,&m,&p);
  12. memset(dis,63,sizeof(dis));
  13. for(int i=1;i<=n;i++)dis[i][i]=0;
  14. while(m--){
  15. scanf("%d%d",&x,&y);
  16. x++;
  17. y++;
  18. scanf("%d",&dis[x][y]);
  19. dis[y][x]=dis[x][y];
  20. }
  21. for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
  22. dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
  23. for(int i=1;i<=p;i++)used[i]=true;
  24. for(int i=p+1;i<=n;i++)used[i]=false;
  25. do{
  26. tmp=0;
  27. for(int i=1;i<=n;i++){
  28. ds=0x7ffffff;
  29. for(int j=1;j<=n;j++)if(used[j])ds=min(ds,dis[i][j]);
  30. tmp=max(tmp,ds);
  31. }
  32. if(tmp<ans){
  33. ans=tmp;
  34. memcpy(b,used,sizeof(b));
  35. }
  36. }while(prev_permutation(used+1,used+n+1));
  37. for(int i=1;i<=n;i++)if(b[i])printf("%d ",i-1);
  38. fclose(stdin);
  39. fclose(stdout);
  40. return 0;
  41. }
  42. /*
  43. 6 8 2
  44. 0 2 10
  45. 0 4 30
  46. 0 5 100
  47. 1 2 5
  48. 2 3 50
  49. 3 5 10
  50. 4 3 20
  51. 4 5 60
  52. Answer:
  53. 0 3
  54. */