5 条题解

  • 1
    @ 2023-9-23 9:45:58

    e· · · · · ·

    #include <bits/stdc++.h>
    using namespace std;
    int n, u, v, w, ans = 1e9, dis[1005][1005], sum = 0;
    struct tree
    {
        int to, w;
    };
    vector<tree> e[1005];
    void dfs(int u, int fa, int sum)
    {
        ans = min(ans, sum);
        for (int i = 0; i < e[u].size(); i++)
        {
            int v = e[u][i].to;
            if (v == fa)
                continue;
            dfs(v, u, sum + e[u][i].w);
        }
    
    }
    int main()
    {
        cin >> n;
        for (int i = 1; i < n; i++)
        {
            cin >> u >> v >> w;
            e[u].push_back((tree){v, w});
            e[v].push_back((tree){u, w});
        }
        for (int i = 1; i <= n; i++)
            dfs(i, 0, 0);
        cout << ans;
        return 0;
    }
    
    • 0
      @ 2023-10-15 20:21:46

      100分题解

      枚举出任意两点的距离,找出最小值,时间复杂度:O(n²)

      #include
      using namespace std;
      int n,u,v,w,a[1001][1001],ans = 999999; 
      struct A
      {
      	int V[1001],W[1001],num = 0;
      } U[1001];
      void f(int x,int y,int z,int sum)
      {
      	a[x][y] = sum;
      	for (int i = 1;i <= U[y].num;i++)
      	{
      		if (U[y].V[i] != z)
      		{
      			f(x,U[y].V[i],y,sum + U[y].W[i]);
      		}
      	}
      }
      int main()
      {
      	cin >> n;
      	for (int i = 1;i < n;i++)
      	{
      		cin >> u >> v >> w;
      		U[u].V[++U[u].num] = v;
      		U[u].W[U[u].num] = w;
      		U[v].V[++U[v].num] = u;
      		U[v].W[U[v].num] = w;
      		
      	}
      	for (int i = 1;i <= n;i++)
      	{
      		f(i,i,0,0);
      	}
      	for (int i = 1;i < n;i++)
      	{
      		for (int j = i + 1;j <= n;j++)
      		{
      			ans = min(ans,a[i][j]);
      		}
      	}
      	cout << ans;
      	return 0;
      }
      
      • -1
        @ 2021-8-19 10:29:15

        本题做法很多,考虑到数据范围就 10001000,所以最简单的做法就是枚举每个点作为起点时到其他所有点的距离,即选择当前点作为根时的每个节点的深度,采用 dfsbfs 皆可,时间复杂度为 O(n2)O(n^2),这里给出 bfs 的代码。

        int main()
        {
            cin >> n;
            for (int i = 1; i <= n - 1; i++)
            {
                int u, v, w;
                cin >> u >> v >> w;
                e[u].push_back((Edge){v, w});
                e[v].push_back((Edge){u, w});
            }
            int ans = 1000005;
            for (int i = 1; i <= n; i++)
            {
                while (!q.empty())
                    q.pop();
                for (int j = 1; j <= n; j++)
                    vis[j] = false;
                q.push(i);
                vis[i] = true;
                dis[i] = 0;
                while (!q.empty())
                {
                    int u = q.front();
                    q.pop();
                    for (int j = 0; j < e[u].size(); j++)
                    {
                        int v = e[u][j].v;
                        int w = e[u][j].w; 
                        
                        if (vis[v])
                            continue;
                        dis[v] = dis[u] + w;
                        vis[v] = true;
                        q.push(v);
                        ans = min(ans, dis[v]);
                    }
                }
            }
            cout << ans << "\n";
            return 0;
        }
        
        • -13
          @ 2022-4-24 16:56:26

          写题解请注意

          鼓励大家写题解,但注意题解格式。

          题解一定要有思路解析或代码注释,能否让别人理解你的思路

          也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

          给代码两端加上这个会舒服一些

          ```cpp

          你的代码

          ```

          </span>

          这个点在键盘的左上角tab上面那个键,注意切换输入法

          #include<iostream>
          using namespace std;
          int main()
          {
              int n;
              cin>>n;//这是一个注释
              return 0;
          } 
          

          请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

          抄袭题解一经发现直接取消成绩。

          题解被删除的可能

          1. 代码不符合格式规范
          2. 没有思路讲解或者没有注释,
          3. 无意义的题解

          大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

          • -14
            @ 2022-4-19 22:23:16

            严禁抄题解!发现后直接取消成绩

            • 1

            信息

            ID
            1214
            时间
            1000ms
            内存
            256MiB
            难度
            5
            标签
            递交数
            319
            已通过
            122
            上传者