Language: C++

// 譛?ー乗?蠖「蝗セ?啀OJ3164
// 扈呎怏蜷大クヲ譚?崟荳ュ謖?ョ壻ク?クェ迚ケ谿顔噪轤ケroot??// 豎ゆク?」オ莉・root荳コ譬ケ逧?怏蜷醍函謌先?T?悟ケカ荳乃荳ュ謇?怏霎ケ逧??譚??譛?ー?
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <cmath>
#include <map>
#include <functional>
#include <queue>
#include <vector>
#include <cstdlib>
#include <string>
using namespace std;
const int N=10010;
const int INF=1000000000;
const int eps=1e-8;
struct Node
{
    int u,v,w,c,next;
}e[1000000];
int head[N],cnt;
void add(int u,int v,int w)
{
    e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;
    cnt++;
}
void Add(int u,int v,int w,int c)
{
    e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].c=c;e[cnt].next=head[u];
    head[u]=cnt++;
}
int In[N],x[N],y[N];
int pre[N],ID[N],vis[N];
int n,m;
int dis[N],in[N];
queue<int>q;
void spfa()
{
    for(int i=1;i<=n;i++)
        dis[i]=INF,in[i]=0;
    dis[1]=0;q.push(1);
    while(!q.empty())
    {
        int u=q.front();q.pop();in[u]=0;
        for(int i=head[u];i!=-1;i=e[i].next)
        {
            int v=e[i].v;
            if(dis[v]>dis[u]+e[i].w)
            {
                dis[v]=dis[u]+e[i].w;
                if(!in[v])
                {
                    in[v]=1;q.push(v);
                }
            }
        }
    }
    return;
}
int MST(int rot)
{
    int ret=0;
    int V=n,E=cnt,now,u,v;  // V 蠖灘燕轤ケ逧?クェ謨ー     E 蠖灘燕霎ケ逧?クェ謨ー
    while(true)
    {
        //1.謇セ譛?ー丞?霎ケ
        for(int i=1;i<=V;i++)
            vis[i]=ID[i]=-1,In[i]=INF;
        for(int i=0;i<E;i++)
        {
            u=e[i].u,v=e[i].v;
            if(In[v]>e[i].w && u!=v)
            {
                pre[v]=u;
                In[v]=e[i].w;
            }
        }

        for(int i=1;i<=V;i++)
            if(i!=rot&&In[i]>=INF)
                return -1;//髯、莠?キ滉サ・螟匁怏轤ケ豐。譛牙?霎ケ,蛻呎?譌?ウ募芦霎セ螳?
        //2.謇セ邇ッ
        now=0;In[rot]=0;
        for(int i=1;i<=V;i++)
        {
            ret+=In[i];
            v=i;
            while( vis[v]!=i && v!=rot && ID[v]==-1 ) // pre[v] 蜿ッ閭ス譏ッ蝨ィ蜿ヲ荳?クェ邇ッ蜀?            {
                vis[v]=i;
                v=pre[v];
            }
            if( v!=rot && ID[v]==-1 ) // 謇セ蛻ー邇ッ
            {
                now++; //譬?ョー豈丈クェ邇ッ
                for( u=pre[v]; u!=v; u=pre[u])
                    ID[u]=now;
                ID[v]=now;
            }
        }
        if(now==0) //譌?識
            return ret;
        for(int i=1;i<=V;i++)
            if(ID[i]==-1)
                ID[i]=++now;
        V=now;rot=ID[rot]; // 譖エ譁ー V 蜥?rot

        //3.郛ゥ轤ケ,驥肴眠譬?ョー
        cnt=0;
        for(int i=0;i<E;i++)
        {
            v=e[i].v;u=e[i].u;
            if(ID[u]!=ID[v])
                add(ID[u],ID[v],e[i].w-In[v]); //驥肴眠蟒コ霎ケ
        }
        E=cnt;
    }
    return ret;
}
void build()
{
    int now=cnt;
    cnt=0;
    for(int i=0;i<now;i++)
    {
        int u=e[i].u,v=e[i].v;
        if(dis[v]==dis[u]+e[i].w&&u!=v&&v!=1)
        {
            add(u,v,e[i].c);
        }
    }
    return;
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0)break;
        memset(head,-1,sizeof(head));
        cnt=0;
        for(int i=0;i<m;i++)
        {
            int u,v,w,d;
            scanf("%d%d%d%d",&u,&v,&w,&d);
            Add(u,v,w,d);Add(v,u,w,d);
        }
        spfa();
        build();
        int ans=MST(1);
        printf("%d\n",ans);
    }
    return 0;
}

Compiler output:
a.cc:119:5: error: expected unqualified-id before 'return'
  119 |     return ret;
      |     ^~~~~~
a.cc:120:1: error: expected declaration before '}' token
  120 | }
      | ^