求教!!!hdu1054 为什们会出现Runtime Error (ACCESS_VIOLATION)

jxfactor 2012-03-03 09:53:35
/*
Author: Leo.W
Descriptipn: 给定一个树形的地图,用最少的树节点使得能够控制【即所有结点都能一个被占据的结点相连】全树。
How to Do: 建立结构体,对输入的信息,记录子树的个数及序号,初始选中为false
对未选中的树群中选出相邻未选中树最多的树节点,进行操作;从未选中的树中删去已选中的树;
*/
#include <iostream>
using namespace std;
#define MAXSIZE 1510
struct node{
int lenth;//初始状态下相邻树节点的数量
int dynamicLenth;//动态变化的相邻未选中的树节点的数量
int num[MAXSIZE];//存相邻树节点的序号
bool chose;//表明此树节点是否已处于监视范围
bool olo;
};
node treeNode[MAXSIZE];
int main(){
//freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF){
int i,j;
for(i=0;i<MAXSIZE;i++){//初始树节点的状态
treeNode[i].chose=false;//未选中
treeNode[i].olo=false;
treeNode[i].lenth=0;//相邻树节点为零
}
for(i=0;i<n;i++){
int nodeNo,nodeNum;
scanf("%d:(%d)",&nodeNo,&nodeNum);
treeNode[nodeNo].olo=true;
treeNode[nodeNo].lenth+=nodeNum;//相邻树节点
treeNode[nodeNo].dynamicLenth=treeNode[nodeNo].lenth;
for(j=0;j<nodeNum;j++){
int temp;scanf("%d",&temp);
treeNode[nodeNo].num[j]=temp;
treeNode[temp].lenth++;
treeNode[temp].dynamicLenth=treeNode[temp].lenth;
}
}
int sum=n;
int occupy=0;
while(sum){
int maxs=-1,pos=-1;
for(i=0;i<MAXSIZE;i++){//对未选中的树节点比较其相邻未选中树节点的数目,取最大者
if(!treeNode[i].chose&&treeNode[i].olo&&treeNode[i].dynamicLenth>maxs){
maxs=treeNode[i].dynamicLenth; pos=i;
}
}
sum--;//选中一个总数减一个
treeNode[pos].chose=true;//将选中的树节点涂黑
for(i=0;i<treeNode[pos].lenth;i++){//将选中的树节点周围未选中的树节点选中
int temp=treeNode[pos].num[i];
if(!treeNode[temp].chose){
sum--;//选中一个总数减一个
treeNode[temp].chose=true;
for(j=0;j<treeNode[temp].lenth;j++){//将其相邻的未选中的树节点的相邻未选中点数量减一
int temp2=treeNode[temp].num[j];
if(!treeNode[temp2].chose) treeNode[temp2].dynamicLenth--;
}
}
}
occupy++;//占领树节点数加一
}
printf("%d\n",occupy);
}
return 0;
}
...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞某某某 2012-03-03
  • 打赏
  • 举报
回复
崩溃时,查看调用堆栈,找到触发问题的那一行代码
jxfactor 2012-03-03
  • 打赏
  • 举报
回复
测试了给的几组数据,完全没问题。
数组越界的话,我也仔细检查了,应该没有这样的错误。
求明白人指教!

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧