poj 1511怎么老是Runtime Error

#include<iostream>#defineN8000usingnamespacestd;#include<stdio.h>#include<string.h>#d... #include <iostream>
#define N 8000
using namespace std;
#include <stdio.h>
#include <string.h>
#define UP 99999
long map[N][N];
long p,q;
long ans;
long dis[N];
void dijkstra(long v)
{
long i,j,mindis,minnode;
bool visit[N];
memset(visit,false,sizeof(visit));
for( i=1;i<=p;i++)
dis[i]=map[v][i];
dis[v]=0;
visit[v]=true;
for( i=1;i<=p;i++)
{
mindis=UP;
for( j=1;j<=p;j++)
if(!visit[j] && mindis>dis[j])
{
mindis=dis[j];
minnode=j;
}
visit[minnode]=true;
for( j=1 ;j <=p ; j++)
if(!visit[j] &&dis[j]>dis[minnode]+map[minnode][j])
dis[j]=dis[minnode]+map[minnode][j];
if( v!=1&&visit[1]==true )
break;
}
}
int main()
{
freopen("input.txt","r",stdin);
long n , i , j ;
long c,r;
cin>>n;
while( n-- )
{

memset( map , 0 ,sizeof(map) );
cin >> p >> q ;
for( i=1 ; i<=p ; i++ )
for( j=i ; j<=p ; j++ )
{
if( i==j ) continue ;
map[i][j]=map[j][i]=UP;
}
for( i=1 ; i<=q ; i++ )
{
cin >> c >> r ;
cin>>map[c][r] ;
}
ans = 0;
dijkstra(1);
for( i=2 ; i<=p ; i++ )
ans+=dis[i];
for( i=2 ; i<=p ; i++ )
{
dijkstra(i);
ans+=dis[1];
}
cout << ans <<endl;
}
return 0;
}
数组开大了会超内存呀,怎么解决呀?
展开
 我来答
20053565
2011-05-31 · TA获得超过279个赞
知道小有建树答主
回答量:354
采纳率:0%
帮助的人:207万
展开全部
1 <= P,Q <= 1000000.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式