uva_11997,K Smallest Sums优先队列
2014-09-03 17:50
309 查看
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; int a[1000][1000]; int n; struct Item { int jx,sum; bool operator < (const Item& a)const{ return sum>a.sum; } }; void solve(int x) { priority_queue<Item>q; Item item; for(int i=0;i<n;i++) { item.jx=0,item.sum=a[x][0]+a[0][i]; q.push(item); } for(int i=0;i<n;i++) { Item tem,cur; tem=q.top(); q.pop(); a[0][i]=tem.sum; cur.jx=tem.jx+1; cur.sum=tem.sum-a[x][tem.jx]+a[x][cur.jx]; q.push(cur); } } int main() { while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) scanf("%d",&a[i][j]); sort(a[i],a[i]+n); } for(int i=1;i<n;i++) solve(i); cout<<a[0][0]; for(int i=1;i<n;i++) cout<<" "<<a[0][i]; cout<<endl; } return 0; }
相关文章推荐
- uva 11997 K Smallest Sums 优先队列
- uva 11997 - K Smallest Sums(优先队列)
- UVA11997 K Smallest Sums(并归,优先队列)
- (UVa 11997)K Smallest Sums --多路归并问题,优先队列
- UVA 11997 K Smallest Sums(优先队列)
- uva11997 K Smallest Sums(优先队列)
- UVA 11997 K Smallest Sums(优先队列)
- UVa11997 K Smallest Sums 归并 + 优先队列
- UVA 11997 K Smallest Sums(优先队列)
- UVA 11997 - K Smallest Sums 优先队列
- UVA11997_K_Smallest_Sums_多路并归_优先队列
- uva_11997,K Smallest Sums优先队列
- UVA 11997 K Smallest Sums 优先队列
- K Smallest Sums UVA - 11997(优先队列) 题解
- UVa 11997 K Smallest Sums / 优先队列
- UVA 11997--K Smallest Sums+优先队列用于多路归并
- UVA-11997 - K Smallest Sums(优先队列)
- uva11997 K Smallest Sums(优先队列)
- UVa - 11997 - K Smallest Sums(优先队列)
- uva_11997,K Smallest Sums优先队列