#include #include #include #include #include using namespace std; #define ll long long const int N=2e5+50,M=N<<3; bool inq[N+M]; ll dis1[N+M],dis2[N+M],que[N+M],d[N+M]; int head[N+M],nxt[N+M],len[N+M],to[N+M],ecnt; inline void addEdge(int f,int t,int l) { //printf("Add from %d to %d len %d\n",f,t,l); ecnt++; nxt[ecnt] = head[f]; head[f] = ecnt; to[ecnt] = t; len[ecnt] = l; } void spfa(int s, ll *dis) { memset(inq, 0, sizeof(inq)); int h=0, t=0; for (dis[s] = 0, que[t++] = s, inq[s] = true; h ^ t; inq[que[h++]] = false) for (int cur = head[que[h]]; cur; cur = nxt[cur]) if (dis[to[cur]] > dis[que[h]] + len[cur]) { dis[to[cur]] = dis[que[h]] + len[cur]; if (!inq[to[cur]]) que[t++] = to[cur], inq[to[cur]] = true; } } void readint(int&x) { int ch=x=0; while(!isdigit(ch=getchar())); for(; isdigit(ch); ch=getchar()) x=x*10+ch-'0'; } int main() { int T,n,m,ti,si; readint(T); for(int t=1; t<=T; t++) { ecnt=0; memset(dis1,0x3f3f3f3f,sizeof(dis1)); memset(dis2,0x3f3f3f3f,sizeof(dis2)); memset(head,0,sizeof(head)); readint(n),readint(m); for(int i=0,x; i >PP; for(int j, i=2;ifirst/2); for(int i=0;isecond.size();++i) printf("%d%c",PP.begin()->second[i]," \n"[i==PP.begin()->second.size()-1]); } } return 0; }