原文:
点击打开链接
//题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2064
//(代码含全角空格,你懂的)
#include
#include
#include
#include
using namespace std;
const int N=1010;
struct vil{
int x,y,m;
bool vis;
};
int dis(vil a,vil b){
return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
vil v[N];
int n,temp,best,ans;
void dfs(int s){
for(int i=0;i
if(!v[i].vis&&dis(v[i],v[s])<=900){
v[i].vis=true;
temp+=v[i].m;
dfs(i);
//v[i].vis=false;避免重复访问
}
}
int main(){
while(cin>>n&&n){
for(int i=0;i
cin>>v[i].x>>v[i].y>>v[i].m;
}
ans=-1;best=0;
for(int i=0;i
for(int j=0;j
v[i].vis=true;
temp=v[i].m;
dfs(i);
if(temp>ans) {ans=temp;best=i;}
//v[i].vis=false;避免重复访问
}
cout<<best+1<<' '<<ans<<endl;
}
return 0;
}
本文介绍了解决ACM竞赛中一个特定问题的方法,该问题涉及在一组点中找到满足特定距离约束的最优路径。通过使用DFS深度优先搜索算法和距离计算函数,实现了一个高效的解决方案,最终输出最优路径及其总和。
464

被折叠的 条评论
为什么被折叠?



