UVA 116(p270)----Unidirectional TSP
2016-02-25 22:25
411 查看
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn=110; const int INF=1e7; int d[maxn][maxn]; int next[maxn][maxn]; int a[maxn][maxn]; int n,m,first,ans; void solve() { int i,j,k; for(j=m-1; j>=0; j--) { for(i=0; i<n; i++) { if(j==m-1) d[i][j]=a[i][j]; else { int row[3]= {i-1,i,i+1}; if(i==0) row[0]=n-1; if(i==n-1) row[2]=0; sort(row,row+3); d[i][j]=INF; for(k=0; k<3; k++) { int v=d[row[k]][j+1]+a[i][j]; if(v<d[i][j]) { d[i][j]=v; next[i][j]=row[k]; } } } if(j==0&&d[i][j]<ans) { ans=d[i][j]; first=i; } } } } void print() { printf("%d",first+1); for(int i=next[first][0],j=1; j<m; i=next[i][j],j++) printf(" %d",i+1); printf("\n%d\n",ans); } int main() { while(scanf("%d%d",&n,&m)==2&&n) { ans=INF; first=0; for(int i=0; i<n; i++) for(int j=0; j<m; j++) scanf("%d",&a[i][j]); solve(); print(); } return 0; }
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=52
相关文章推荐
- A/V data用TCP来接收(rtp overrtsp),可以收到数据,但解析不对。
- 从linux复制文件到本地
- 将jdbc结果集转换成对象列表
- leetcode-26-Remove Duplicates from Sorted Array
- 2015年第六届蓝桥杯本科B组C++省赛个人题解
- 定时器0控制LED闪灭
- 应届生程序员求职书籍推荐
- 《笨办法学Python》 第45课手记
- 《leetCode》:Convert Sorted Array to Binary Search Tree
- Exception in thread "main" java.lang.StackOverflowError!
- 自写插件配置html结构的方法
- 汉诺塔问题及其变型
- 工作总结
- 音乐播放器 - iOS开发
- 整理和梳理
- Construct Binary Tree from Inorder and Postorder Traversal
- linux下shellscript实现二分查找
- java多线程
- Animation Resources
- C++11之右值引用