Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:数组开大点.....

Posted by wsbear at 2006-07-22 02:09:55 on Problem 2421
In Reply To:谁能给出测试数据,高手帮帮咱,看看下面程序 Posted by:gaojinjun at 2006-07-04 08:56:22
> #include<iostream>
> #include<stdlib.h>
> using namespace std;
> #define inf 1001
> #define maxint 100
> int c[maxint][maxint]={0};
> int L[maxint*maxint/2][2]={0};
> 
> int Prim(int n)
>  { 
> 	int lowcost[maxint];
>     int closest[maxint];
>     bool s[maxint];
> 	int i,j,k,min,sum=0;
>     s[1] = true;
>     for(i = 2;i<= n; i++)
> 	{
> 		lowcost[i] = c[1][i];
>         closest[i] = 1;
>         s[i]= false; 
> 	}
> 
>     for (i = 1; i< n; i++)
> 	{
> 		 min = inf;
>          j = 1;
>          for ( k = 2;k<= n; k++)
>              if ((lowcost[k] < min)&&(!s[k]))
> 			 {
>                 min = lowcost[ k];
>                 j=k;
> 			 }
>         sum+=min;
>         s[j] = true;
>         for(k= 2; k<= n; k++)
>            if((c[j][k] < lowcost[k])&&(!s[k])) 
> 		   {
> 	     		lowcost[k] = c[j][k];
>                 closest[k] =j; 
> 		   }
> 	}
> 	return sum;
> }
> void convert(int q)
> {
> 	int i;
> 	for(i=0;i<q;i++)
> 		c[L[i][0]][L[i][1]]=0;
> }
> int main()
> {
> 	int N,Q;
>     int i,j;
>   
> 	cin>>N;
> 	if(N<3||N>100)exit(-1);
>     for(i=1;i<=N;i++)
>         for(j=1;j<=N;j++)
> 		   cin>>c[i][j];
> 	cin>>Q;
> 	if(Q>N*(N+1)/2||Q<0)exit(-1);
>     for(i=0;i<Q;i++)
> 		cin>>L[i][0]>>L[i][1];
>     convert(Q);
> 	int s=Prim(N);
> 	cout<<s;
> 	system("PAUSE");
> 	return 1;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator