#define LOCAL//提交时注释
#ifdef LOCAL
#define debug(...) fprintf(stderr,##__VA_ARGS__)
// ^~~~~~~~~~~
#else
#define debug(...)
#endif
template<int N,int M,class T=int> struct graph{
int cnt,head[N+10],nxt[M*2+10];
struct edge{
int u,v;T w;
edge(int u=0,int v=0,T w=T()):u(u),v(v),w(w){}
//
^~~
bool operator<(edge b)const{return w<b.w;}
} e[M*2+10];
edge operator[](int i){return e[i];}
graph():cnt(0){memset(head,0,sizeof head);}
void add(int u,int v,T w=T()){e[++cnt]=edge(u,v,w),nxt[cnt]=head[u],head[u]=cnt;}
void link(int u,int v,T w=T()){add(u,v,w),add(v,u,w);}
};
注:T()
为类型 T
的默认构造函数。
void merge(int x,int y){if(x=find(x),y=find(y),x!=y) cnt--,fa[y]=x;}
即,括号里写一堆逗号。
const int dx[]={0,-1,0,0,1};
即,不写明数组大小。
请问这些语法是否可以使用?