Codeforces 404C Restore Graph 构造
来源:互联网 发布:怎么添加usb端口 编辑:程序博客网 时间:2024/05/16 01:41
点击打开链接
题意:给出n个点的最短距离数组d[i],每个顶点的度数<=K,构造出满足条件的图,输出边
先将距离d[i]排序,从小到大构造边 保存最短距离为x-1的点pre,把距离为x的连接到x-1上,每个pre[i]最多连接k次,更新pre即可 复杂度O(M)==1e6
#include <bits/stdc++.h>using namespace std;typedef pair<int,int> ii;const int N=2e5+20;struct node{int id,x;}d[N];bool cmp(node a,node b){return a.x<b.x;} int n,K;vector<ii> ans;//u-vvector<ii> pre,now;// 距离为k-1的点,使用次数 int main(){while(cin>>n>>K){int u=-1;bool flag=true;for(int i=1;i<=n;i++)scanf("%d",&d[i].x),d[i].id=i; sort(d+1,d+1+n,cmp);for(int i=1;i<=n;i++){if(d[i].x==0){if(u==-1)u=i;elseflag=false;}}if(u==-1||flag==false){puts("-1");continue;}ans.clear(),pre.clear(),now.clear();int i=2,j;pre.push_back(ii(u,K));for(int k=1;k<n;k++)//最短距离为k时 {if(pre.empty()&&i<=n){flag=false;break;}j=0;//while(i<=n&&d[i].x==k){ if(pre[j].second==0)j++;if(j==pre.size()){flag=false;break;}pre[j].second--;ans.push_back(ii(pre[j].first,i));now.push_back(ii(i,K-1));i++;}pre.clear();pre=now;now.clear();}if(flag==false){puts("-1");continue;}cout<<ans.size()<<endl;for(int i=0;i<ans.size();i++)cout<<d[ans[i].first].id<<' '<<d[ans[i].second].id<<endl;}return 0;}
0 0
- Codeforces 404C Restore Graph 构造
- codeforces 404C - Restore Graph
- CodeForces 404C Restore Graph
- Codeforces 404C Restore Graph
- Codeforces 404C Restore Graph【思维】
- Codeforces Round #237 (Div. 2) / 404C Restore Graph (构造最短路径树)
- CF 404C - Restore Graph
- codeforces 404 B. Marathon、C. Restore Graph、D. Minesweeper 1D
- Codeforces Round #237 (Div. 2)-C. Restore Graph
- codeforces#237_div2_C Restore Graph
- codeforces #402C Searching for Graph 构造
- Codeforces 402C Searching for Graph【构造】
- #237 div2 C. Restore Graph
- Codeforces 623A Graph and String (构造)
- CodeForces 600C【构造】
- CodeForces 110C 【构造】
- Codeforces 141C【构造】
- CodeForces 828C【构造】
- springmvc常用注解标签详解
- popupWindow 嵌套scrollview异常显示的原因.
- 半闲居士视觉SLAM十四讲笔记(4)李群与李代数
- AndroidStudio非法字符: '\ufeff'解决
- 运算符的优先级
- Codeforces 404C Restore Graph 构造
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- jquery自己写插件
- unity3d c#用于两个坦克对打血条的增减
- 浅谈java集合
- 玩转java多线程学习篇二 实例变量与线程安全
- Problem A: 大学的组织架构
- 决策树模型组合之随机森林与GBDT
- Zuma Game