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 |
请问我的程序为什么总是RE#include <iostream> using namespace std; int a[4951],b[4951],value[4951],f[4951]; void qsort(int value[],int m,int n) { int p=m,q=n,mid=value[(m+n)/2]; do { while(value[p]<mid && p<n) p++; while(value[q]>mid && q>m) q--; if(p<=q) { swap(value[p],value[q]); swap(a[p],a[q]); swap(b[p],b[q]); swap(f[p],f[q]); p++; q--; } }while(p<=q); if(q>m) qsort(value,m,q); if(p<n) qsort(value,p,n); } int main() { int n; cin>>n; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); memset(value,0,sizeof(value)); int temp,flag=0,i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { cin>>temp; if(temp!=0 && i<j) { a[flag]=i; b[flag]=j; value[flag]=temp; f[flag]=flag; flag++; } } int q,temp1; cin>>q; for(i=0;i<q;i++) { cin>>temp>>temp1; for(j=0;j<=n-1;j++) if((a[j]==temp && b[j]==temp1) || (b[j]==temp && a[j]==temp1)) value[j]=0; } qsort(value,0,flag-1); int sum=0,k=0,m1=0,m2=0,sn1=0,sn2=0; j=0; while(k<flag-1) { m1=a[j]; m2=b[j]; sn1=f[m1]; sn2=f[m2]; if(sn1!=sn2) { sum+=value[j]; k++; for(i=0;i<flag;i++) if(f[i]==sn2) f[i]=sn1; } j++; } cout<<sum; system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator