这道题是有环图。
long long 的memset函数的127比int来的大。
对数据进行操作时应注意会不会超出范围。
这道题居然有环!!!
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
int N,M,Q;
struct data2{
int len,num;
data2() {}
data2(int len,int num) : len(len),num(num){
}
}ans;
struct data{
int to,v; data() {}
data(int to,int v): to(to),v(v){
}
};
vector<data> a[20];
inline void dfs(int x,int y,int len,int num){
if(x == y){
if(ans.len*num > len*ans.num) ans = data2(len,num);
return;
}
for(int i = 0; i < a[x].size(); i++){
dfs(a[x][i].to,y,len+a[x][i].v,num+1);
}
return;
}
int main(){
scanf("%d %d",&N,&M);
for(int i = 1; i <= M; i++){
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
a[x].push_back(data(y,z));
}
scanf("%d",&Q);
while(Q--){
ans = data2(10000,1);
int x,y;
scanf("%d %d",&x,&y);
dfs(x,y,0,0);
if(ans.len == 10000) printf("OMG!\n");
else printf("%.3lf\n",(double)ans.len/ans.num);
}
return 0;
}
就算打暴力也要尽量往优化的地方想。
重边没有考虑,偷懒直接用数组存图是不行的!!