为什么我用宏定义的for循环就会RE+死循环?
把宏定义改成普通的for就没事了(11行)
本蒟蒻很不解(目前已A)
这个宏定义貌似没问题啊
#include<bits/stdc++.h>
#define ad(k) (k=-~k)
#define F(i,a,b) for(register int i=a;i<=b;i=-~i)
#define sb(k) (k=~-k)
using namespace std;const int N=100005;
struct node{int y,s;};vector<node> a[N];
int n,m,x,y,s,r[N];double d,gl[N];
inline void dfs(int id,double g){
sb(r[id]);gl[id]+=g;
if(r[id]!=0)return;
for(int i=0;i<a[id].size();i++){
d+=gl[id]/a[id].size()*a[id][i].s;
dfs(a[id][i].y,gl[id]/a[id].size());
}
return;
}main(){
cin>>n>>m;
F(i,1,m){cin>>x>>y>>s;a[x].push_back(node{y,s});ad(r[y]);}
r[1]=1;dfs(1,1.0);
cout<<fixed<<setprecision(2)<<d;
}