frf0123 frf0123
关注数: 4 粉丝数: 62 发帖数: 834 关注贴吧数: 18
求助:蓝桥练习系统运行错误 历届试题 城市建设 。改了好几次,都是运行错误,把数据下载下来一组一组的自己试,都能过。 下面是代码: #include<iostream> #include<cstring> #include<cstdio> using namespace std; int Map[11111][11111]; int root[11111]; bool vis[11111]; bool flag[11111]; int n,m; int sum=0; int count=0; int cost; int find(int x) { if(root[x]==x)return x; return root[x]=find(root[x]); } void Union(int a,int b) { if(a==b)return ; root[a]=b; } void Prim() { int i,j,pos,MIN; int dist[11111]; bool f=false; memset(flag,true,sizeof(bool)*(n+1)); MIN=11111,pos=0; vis[pos]=false; for(i=0;i<=n;i++) dist[i]=Map[pos][i]; for(i=j=1;i<=n;i++) if(!vis[i]) j++; //cout<<endl; for(;j<=n;j++) { MIN=11111; for(i=0;i<=n;i++) if(vis[i]&&dist[i]<MIN) pos=i,MIN=dist[i]; if(MIN==11111) return; vis[pos]=false; sum+=MIN; //printf("%d %d %d %d\n",pos,MIN,sum,count); if(flag[pos]) count++,cost=MIN; for(i=0;i<=n;i++) if(vis[i]&&Map[pos][i]<dist[i]) dist[i]=Map[pos][i],flag[i]=false; } } int main() { freopen("D:\\input10.txt","r",stdin); //freopen("D:\\output9.txt","w",stdout); int i,j; scanf("%d%d",&n,&m); memset(vis,true,sizeof(bool)*(n+1)); for(i=0;i<=n;i++) { root[i]=i; for(j=0;j<=n;j++) Map[i][j]=11111; } int a; while(m--) { scanf("%d%d%d",&i,&j,&a); if(a<Map[i][j]) { if(a<0) { sum+=a; Union(find(i),find(j)); } else { Map[i][j]=Map[j][i]=a; } } } for(i=1;i<=n;i++) { scanf("%d",&a); if(a!=-1) Map[i][0]=Map[0][i]=a; } /*for(i=0;i<=n;i++) { printf("%2d : ",i); for(j=0;j<=n;j++) if(Map[i][j]!=11111) printf("%2d ",Map[i][j]); else printf("%2d ",-1); cout<<endl; } for(i=0;i<=n;i++) printf("%2d : %2d \n",i,Map[0][i]);*/ for(i=1;i<=n;i++) find(i); for(i=0;i<=n;i++) if(root[i]!=i) { vis[i]=false; for(j=0;j<=n;j++) if(Map[i][j]<Map[root[i]][j]) Map[j][root[i]]=Map[root[i]][j]=Map[i][j]; } /*for(i=0;i<=n;i++) for(j=0;j<i;j++) if(Map[i][j]!=Map[j][i]) printf("Map[%2d][%2d] = %d Map[%2d][%2d] = %d\n",i,j,Map[i][j],j,i,Map[j][i]); for(i=0;i<=n;i++) if(root[i]!=54) printf("%d root : %d\n",i,root[i]); cout<<"整理后"<<endl; for(i=0;i<=0;i++) { printf("%2d : ",i); for(j=0;j<=n;j++) if(Map[i][j]!=11111) printf("%2d ",Map[i][j]); else printf("%2d ",-1); cout<<endl; }*/ /*for(i=0;i<=n;i++) if(root[i]==54) printf("%2d : %2d \n",i,Map[0][i]);*/ Prim(); if(count==1) sum-=cost; cout<<sum<<endl; return 0; }
新人玩了一天半,貌似还遇到了一个BUG 大概点进来看的都是想看BUG吧。 我貌似是遇到了个速度BUG。 我已经把拖船都放仓库了。 首先是我平时用的攻势作为旗舰速度是7. 然后是刚从仓库拿出来的攻势,速度只有4这艘高点速度有6然后我把旗舰改为高点,速度还是6原来的旗舰攻势速度也没变就是说我的指挥官并没有影响旗舰的速度。 然后附上指挥官技能图最后问题来,为什么两艘攻势的速度会不一样,为什么我作为旗舰的攻势身为战列舰会有比高点等巡洋舰有更高的速度加成. 最后的最后是新人玩一天半的成果 这是当前舰队配置。攻势带着4艘巡洋舰第一波部署顶前面,与他们同为第一波部署的还有几队飞机联队,数目为战场上那些buff点的数目+一队黄蜂,黄蜂用于护卫攻势。其他的联队用于抢buff点接下来位于新达强权的船坞位于速子科技的船坞都是配上武器了的,只是技能点不够,有些插件没有解锁。现在用的攻势插件都是早期的。 然后是新达强权的武器库这个武器库比较少,因为有个船坞在这,武器都用于装备船只了。 位于霸主的武器库这里基本是维修用的,现在这个配置遇到对面有两艘攻势会损失巡洋舰。 那些小的船舱和武器库就没截图了。 现在指挥官都52级了。舰队规模已经好久没提升了。一路上基本都是打悬赏,因为前面嫌弃大货船速度慢,小货船载货量小,就没去赈灾,后来为了提升等级解锁插件。每次信达强权的两个仓库粮食到1.5w后就开始打悬赏等粮食短缺,但是悬赏从我开始赈灾到现在都最高就是26w没提升过。请问怎么才能提示赏金啊,现在的悬赏打起来都没压力了,船坞里的船还都等着出来呢。 还有哇,想玩些mod,不知道0.651a能装哪些mod(在贴吧看到的都是提到0.54的不知道能不能用)
1 下一页