UVA 12717 Fiasco
来源:互联网 发布:知乎数据接口 编辑:程序博客网 时间:2024/05/21 15:03
题意:看懂给出的伪代码功能,然后根据所给的一组数据,将数据改造成伪代码可以执行出正确代码的一套数据
这个题的主要问题在于看懂题意,看懂题之后会发现伪代码的功能是按照连通性选择到达当前节点的最小值,而不是和,所以完全可以借用BFS跑一遍所有的点,再把边权按照先后顺序依次填充即可
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<queue>using namespace std;typedef pair<int,int> P;const int maxn=2500+7;int n,m,s;int d[maxn][maxn],vis[maxn];vector<int> g[maxn],dis;vector<P> input;void work(int s){ memset(vis,0,sizeof(vis)); queue<int> q; q.push(s); int k=0; while(!q.empty()) { int x=q.front(); q.pop(); if(vis[x]) continue; vis[x]=1; int vs=g[x].size(); for(int i=0; i<vs; i++) { int v=g[x][i]; if(vis[v]) continue; d[x][v]=d[v][x]=dis[k++]; q.push(v); } }}int main(){ int T; scanf("%d",&T); for(int kas=1; kas<=T; kas++) { scanf("%d%d%d",&n,&m,&s); dis.clear(); input.clear(); for(int i=1; i<=n; i++) g[i].clear(); for(int i=1; i<=m; i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); g[u].push_back(v); g[v].push_back(u); dis.push_back(w); input.push_back(P(u,v)); } sort(dis.begin(),dis.end()); work(s); printf("Case %d:\n",kas); for(int i=0; i<m; i++) { int u,v,w; u=input[i].first; v=input[i].second; w=d[u][v]; printf("%d %d %d\n",u,v,w); } } return 0;}
0 0
- UVA 12717 Fiasco 水题
- UVA 12717 Fiasco
- Fiasco
- L4 Fiasco调度结构
- UVALive 6658 - Fiasco(BFS)
- L4操作系统(L4/Fiasco)
- TEE-Fiasco实现需求分析
- L4操作系统(L4/Fiasco介绍)
- 避免 Static Initialization Order Fiasco (SIOF)
- 在Ubuntu 16.04 LTS环境下安装L4RE和Fiasco
- Ubuntu 16.04下搭建L4Re及Fiasco.OC µ-kernel
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- RE:从零开始的数据结构生活
- September 24th 模拟赛C T2 序列和 Solution
- G - N!Again
- [codevs1021] 玛丽卡
- Win10 64位系统下Python 及 Numpy , matplotlib,scipy工具包的安装
- UVA 12717 Fiasco
- JavaEE之第五课时
- Android 工具:adb
- mac环境添加路由表
- 版本控制git
- 使用sql的一些笔记
- C#对 Json的序列化和反序列化会出现“k_BackingField”
- 《c和指针》(九)
- 面向过程与面向对象是什么?