Problem F
2016-06-21 09:56
393 查看
简单题意
给出村庄(编号用字母表示)与其他村庄之间道路的维护费用(村庄不一定和其他村庄有直接相连的道路),选择适当的道路进行维护,使得所有村庄都能通过被维护的道路连通而且维护费用最少。
解题思路形成过程
又是求最少(小)的问题,还是换汤不换药,重用Problem D的代码,不就是把村庄序号改成字母了嘛,用ASCII码转换成数字,对于“村庄不一定和其他村庄有直接相连的道路”
没有直接道路相连的村庄,假设有一条路只不过维护费用无穷大。改完这些代码顺利AC
感想
前六道题一个代码用了5遍,总感觉是在耍小聪明
AC代码
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int n;
int Min[110];
int visit[110];
int dis[110][110];
void solve(){
memset(visit,0,sizeof(visit));
int x=1;
visit[1]=1;
int sum=0;
for(int i=2;i<=n;i++)
Min[i]=dis[1][i];
for(int i=1;i<n;i++){
int temp=10000000;
for(int j=1;j<=n;j++)
if(!visit[j]&&temp>Min[j]){
temp=Min[j];
x=j;
}
sum+=temp;
visit[x]=1;
for(int j=1;j<=n;j++)
if(!visit[j]&&dis[j][x]<Min[j])
Min[j]=dis[j][x];
}
cout<<sum<<endl;
}
int main()
{
ifstream cin("in.txt");
char c;
int m,p;
while(cin>>n&&n){
memset(dis,0x3f,sizeof(dis));
for(int i=1;i<=n-1;i++){
cin>>c>>m;
for(int j=1;j<=m;j++){
cin>>c>>p;
int temp=int(c-'A')+1;
dis[i][temp]=dis[temp][i]=p;
}
}
solve();
}
return 0;
}
给出村庄(编号用字母表示)与其他村庄之间道路的维护费用(村庄不一定和其他村庄有直接相连的道路),选择适当的道路进行维护,使得所有村庄都能通过被维护的道路连通而且维护费用最少。
解题思路形成过程
又是求最少(小)的问题,还是换汤不换药,重用Problem D的代码,不就是把村庄序号改成字母了嘛,用ASCII码转换成数字,对于“村庄不一定和其他村庄有直接相连的道路”
没有直接道路相连的村庄,假设有一条路只不过维护费用无穷大。改完这些代码顺利AC
感想
前六道题一个代码用了5遍,总感觉是在耍小聪明
AC代码
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int n;
int Min[110];
int visit[110];
int dis[110][110];
void solve(){
memset(visit,0,sizeof(visit));
int x=1;
visit[1]=1;
int sum=0;
for(int i=2;i<=n;i++)
Min[i]=dis[1][i];
for(int i=1;i<n;i++){
int temp=10000000;
for(int j=1;j<=n;j++)
if(!visit[j]&&temp>Min[j]){
temp=Min[j];
x=j;
}
sum+=temp;
visit[x]=1;
for(int j=1;j<=n;j++)
if(!visit[j]&&dis[j][x]<Min[j])
Min[j]=dis[j][x];
}
cout<<sum<<endl;
}
int main()
{
ifstream cin("in.txt");
char c;
int m,p;
while(cin>>n&&n){
memset(dis,0x3f,sizeof(dis));
for(int i=1;i<=n-1;i++){
cin>>c>>m;
for(int j=1;j<=m;j++){
cin>>c>>p;
int temp=int(c-'A')+1;
dis[i][temp]=dis[temp][i]=p;
}
}
solve();
}
return 0;
}
相关文章推荐
- iOS 时间与日期处理
- python笔记之NUMPY
- VIDEOIO ERROR: V4L/V4L2: VIDIOC_S_CROP
- 2016,拒绝混日子!
- ACdream 1415 最短路+桥的判断
- atomic与nonatomic区别
- 开启终极效率shell之旅(2)
- 前端的小玩意(3)禁止元素被选中
- Java Network Programming 笔记(1)
- Objective-C实现冒泡排序算法的简单示例
- 首师大附中互测题:50229234海岛帝国:独立之战【C002】
- 《C#高级编程》读书笔记(二)
- jquery获取对象
- 【转载】C++ typedef用法小结
- 0621回顾和总结
- Redis配置文件详解
- 编写可复用的无缝滚动轮播图
- []快速开发]最常用的正则表达式--你一定要知道
- form action中get \post传递参数的问题
- linux关于动态库链接小记