Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
谁能给个反例啊?多谢!#include <stdio.h> #include <memory.h> /* Sample Input 1 3 0 990 692 990 0 179 692 179 0 Sample Output 692 */ struct node { int x,y,v; }; int t,n; node a[125001]; int b[501]; int split (node A[],int low,int high); void quicksort(node A[],int low,int high); int work(); bool test(int x,int y); void change(int x,int y); int min(const int &x,const int &y); void main() { int i,j,k,temp,ct; scanf("%d",&t); for(k=1;k<=t;k++) { scanf("%d",&n); ct = 1; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&temp); if(i<j) { a[ct].v = temp; a[ct].x = i; a[ct].y = j; ct++; } }/*readIn() is over*/ } int result = work(); printf("%d\n\n",result); } } int work() { //printf("I am working!\n"); int i; int len = (n-1)*n/2; quicksort(a,1,len); //for(i=1;i<=len;i++)printf("%d ",a[i].v); for(i=1;i<=n;i++) { b[i] = i; } b[a[1].x] = b[a[1].y] = min(a[1].x,a[1].y); int ct = 1; i = 1; for(i=2;i<=len;i++) { if(test(a[i].x,a[i].y)) { change(a[i].x,a[i].y); ct++; } if(ct==n-1)break; } //printf("a[%d] = %d\n",i,a[i].v); //if(len==1) i = 1; return a[i].v; } void quicksort(node A[],int low,int high) { //printf("I am sorting!\n"); int k; if(low<high) { k = split(A,low,high); quicksort(A,low,k-1); quicksort(A,k+1,high); } } bool test(int x,int y) { if(b[x]==b[y])return false; else return true; } void change(int x,int y) { int mini = x<y?x:y; int maxi = x>y?x:y; int i = 1; for(i=1;i<=n;i++) { if(b[i]==maxi) b[i] = mini; } } int min(const int &x,const int &y) {return x<y?x:y;} int split(node A[],int low,int high) { int k,i = low,temp; int x = A[low].v; for(k = low+1;k<=high;k++) { if(A[k].v <= x) { i++; if(i!=k) { temp = a[i].v; a[i].v = a[k].v; a[k].v = temp; temp = a[i].x; a[i].x = a[k].x; a[k].x = temp; temp = a[i].y; a[i].y = a[k].y; a[k].y = temp; } } } temp = a[i].v; a[i].v = a[low].v; a[low].v = temp; temp = a[i].x; a[i].x = a[low].x; a[low].x = temp; temp = a[i].y; a[i].y = a[low].y; a[low].y = temp; return i; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator