完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小Q最近在玩一个嵌入式开发板,看着板子上的一堆电容,他想比较板子上电容数量的多少。第一行给定比较次数n,
接下来n行,每行给定两个板子的编号a1,a2,编号从1开始。每行第一个元素a1为第一次比较中板子上电容数量较多的 板子编号,第二个元素a2为板子上电容数量较少的板子编号。最后一行为要比较的两块板子的编号a,b.请返回这两块 板子上电容数量大小的关系,若a更多返回1,b更多返回-1,无法判断返回0。输入数据保证合法,不会有矛盾的情况出现。 思路:看作有向图,从a开始遍历,如果可以到b,则a更多,然后从b开始再遍历一次,如果可以到a,则b更多,否则输出0 #include #include #include #include using namespace std; //邻接表 typedef struct ArcNode{ int adjvex; struct ArcNode *next; }ArcNode; typedef struct VNoode{ ArcNode *firstArc; }VNode; VNode G[100]; int vis[100]; //创建邻接表 void create(){ int n,a,b; for(int i=0;i<100;i++){ G.firstArc=NULL; } cin>>n; ArcNode *p; for(int i=0;i cin>>a>>b; p->adjvex=b;//头插法 p->next=G[a].firstArc; G[a].firstArc=p; } } int bfs(int v,int d){ queue q.push(v); vis[v]=1; while(!q.empty()){ ArcNode *p; int s=q.front(); if(s==d) return 1; q.pop(); p=G while(p!=NULL){ int i=p->adjvex; if(!vis){ q.push(i); vis=1; } p=p->next; } } return 0; } int main() { memset(vis,0,sizeof(vis)); create(); int a1,a2,a,b; cin>>a>>b; a1=bfs(a,b); memset(vis,0,sizeof(vis)); a2=bfs(b,a); if(a1==1){ cout<<1< cout<<-1< cout<<0< } |
|
|
|
只有小组成员才能发言,加入小组>>
827 浏览 0 评论
1166 浏览 1 评论
2546 浏览 5 评论
2873 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2731 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1137浏览 3评论
203浏览 2评论
469浏览 2评论
384浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
465浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-1 19:03 , Processed in 1.158363 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号