首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

zoj 2048为何不行啊 求大神解惑

2013-01-06 
zoj 2048为什么不行啊 求大神解惑测试结果正确啊 但不知道哪里错了 #includeiostream#includestdio.h#

zoj 2048为什么不行啊 求大神解惑
测试结果正确啊 
但不知道哪里错了 

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
typedef struct T
{
    int x,y;
}Town;
int edge[751][751];
Town town[751];
int nearvex[751];
int lowcost[751];
int N,M;
void prim()
{
int i,j;
lowcost[0]=0;
for(i=1;i<N;i++)
{
lowcost[i]=edge[0][i];
nearvex[i]=0;
}
nearvex[0]=-1;
for(i=0;i<N-1;i++)
{
int m=1000000;
int v=-1;
for(j=0;j<N;j++)
{
if(nearvex[j]!=-1&&lowcost[j]<m)
{
m=lowcost[j];
v=j;
}
}
if(v!=-1)
{
if(edge[nearvex[v]][v]!=0&&edge[v][nearvex[v]]!=0)
printf("%d %d\n",nearvex[v]+1,v+1);
nearvex[v]=-1;
for(j=0;j<N;j++)
{
if(nearvex[j]!=-1&&lowcost[j]>edge[v][j])
{
lowcost[j]=edge[v][j];
    nearvex[j]=v;
}
}
}
}
}

int main()
{
int T;
scanf("%d",&T);
while(T--)
{
//cin.get();
scanf("%d",&N);
for(int j=0;j<N;j++)
{
scanf("%d %d",&town[j].x,&town[j].y);
}
memset(edge,0,sizeof(edge));
for(int j=0;j<N;j++)
{
for(int k=j+1;k<N;k++)
{
edge[j][k]=edge[k][j]=(town[j].x-town[k].x)*(town[j].x-town[k].x)+(town[j].y-town[k].y)*(town[j].y-town[k].y);

}
}
scanf("%d",&M);
int a,b;
for(int j=0;j<M;j++)
{
scanf("%d %d",&a,&b);
edge[a-1][b-1]=0;
edge[b-1][a-1]=0;
}
memset(lowcost,0,sizeof(lowcost));
prim();
if(T>0)
printf("\n");
}
return 0;
}

请大神帮忙 在线等啊 
[解决办法]
int m=1000000;

不够。你最大的edge可能有800000000

热点排行