//Δ_1002 #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef double DB; const int N = 3003; const int M = 111111; const int inf = 1e9; int n,m,tot,la[N],s,t,ans,f[N],c[N],g[N]; vector v[N]; int fnd(int x){ if(f[x]==x) return x; return f[x]=fnd(f[x]); } struct edge{ int pr,to,co; }e[M]; void adde(int x,int y,int z){ tot++; e[tot].pr=la[x]; e[tot].to=y; e[tot].co=z; la[x]=tot; } priority_queue > Q; void solve(){ int i,j,o,x,y; while(!Q.empty()){ Q.pop(); } for(i=1;i<=n;i=i+1) c[i]=0,g[i]=0; t=fnd(1); Q.push(make_pair(0,t)); while(!Q.empty()){ o=Q.top().second; Q.pop(); if(g[o]) continue; g[o]=1; for(j=v[o].size();j--;){ x=v[o][j]; for(i=la[x];i;i=e[i].pr){ y=fnd(e[i].to); if(!g[y]){ c[y]+=e[i].co; Q.push(make_pair(c[y],y)); } } } s=t,t=x; } for(i=1;i<=n;i=i+1) if(f[i]==i&&!g[i]) ans=0; ans=min(ans,c[t]); } int main() { int i,j,x,y,z; while(cin>>n>>m){ tot=1; for(i=1;i<=n;i=i+1) la[i]=0; while(m--){ cin>>x>>y>>z; adde(x,y,z),adde(y,x,z); } for(i=1;i<=n;i=i+1){ f[i]=i; v[i].push_back(i); } ans=inf; for(i=1;i