首页 > 代码库 > SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩
SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩
看完题目就觉得是个图论题……
每个人的成绩就是vertice,两个人的分数差就是edge,那么肯定类似于一种relax的方式,不断将每个人的成绩的min往上提,
当然,单纯的遍历一遍G.E肯定不可能就得到yaoge成绩min的最大值,所以直觉上就想到了bellman-ford,写了一发交了就过了
1 #include<cstdio> 2 int n,p,q; 3 int score[105]; 4 struct Edge{ 5 int high,low,delta; 6 }edge[1005]; 7 void relax(int low,int high,int delta) 8 { 9 if(score[low]+delta>score[high]) score[high]=score[low]+delta; 10 } 11 int main() 12 { 13 int t; 14 scanf("%d",&t); 15 while(t--) 16 { 17 scanf("%d%d%d",&n,&p,&q); 18 for(int i=1;i<=n;i++) score[i]=0; 19 for(int i=1;i<=p;i++) 20 { 21 int id,min; 22 scanf("%d%d",&id,&min); 23 if(min>score[id]) score[id]=min; 24 } 25 for(int i=1;i<=q;i++) 26 { 27 scanf("%d%d%d",&edge[i].high,&edge[i].low,&edge[i].delta); 28 } 29 for(int k=1;k<=n;k++) 30 { 31 for(int i=1;i<=q;i++) 32 { 33 relax(edge[i].low,edge[i].high,edge[i].delta); 34 } 35 } 36 printf("%d\n",score[1]); 37 } 38 }
还是比较惊喜的……不过写完听说这是个叫做“拆分约束系统”的东西,去看了一下发现差不多就是这么回事儿,看来我的直觉还挺准的(笑哭)……
SHU 第15届上海大学程序设计联赛夏季赛[热身赛] 第三题(G题) - 英语成绩
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。