P1070 新年趣事之遊戲

2021-08-04 12:14:59 字數 998 閱讀 4863

次小生成樹板題。

先求出最小生成樹。(因為題目沒有說清楚邊的條數,所以我使用了prim)

然後在最小生成樹上預處理出每兩點間的樹邊的最大值。(每個點bfs一邊就好了。)

然後列舉沒加進去的邊,每次替掉所在環上除自己外的最大值,取min就是答案了。

複雜度o(n^2)。

**:

#include#include#include#include#include#include#include#includeusing namespace std;

#define rep(i,j,k) for(i=j;i<=k;++i)

#define per(i,j,k) for(i=j;i>=k;--i)

#define g getchar()

#define ll long long

#define pii pair#define mkp make_pair

#define x first

#define y second

#define n 505

#define nn 250005

#define inf 1061109567

int n,m;struct edgee[nn];

vectorv[n];bool vis[n];int min[n],pos[n],ans;

int he[n],ne[n<<1],to[n<<1],w[n<<1],tot;

int q[n],max[n][n],ans2;bool inq[n];

void read(int &x)

void add(int x,int y,int z)

void bfs(int x)

memset(min,63,sizeof min);

vis[x=1]=1;tot=1;

rep(i,2,n)

if(i<=n)

printf("cost: %d\n",ans);

if(m

P1070 道路遊戲

小新正在玩乙個簡單的電腦遊戲。遊戲中有一條環形馬路,馬路上有 n 個機械人工廠,兩個相鄰機械人工廠之間由一小段馬路連線。小新以某個機械人工廠為起點,按順時針順序依次將這 n 個機械人工廠編號為1 n,因為馬路是環形的,所以第 n 個機械人工廠和第 1 個機械人工廠是由一段馬路連線在一起的。小新將連線...

洛谷P1070 道路遊戲

小新正在玩乙個簡單的電腦遊戲。遊戲中有一條環形馬路,馬路上有 n 個機械人工廠,兩個相鄰機械人工廠之間由一小段馬路連線。小新以某個機械人工廠為起點,按順時針順序依次將這 n 個機械人工廠編號為1 n,因為馬路是環形的,所以第 n 個機械人工廠和第 1 個機械人工廠是由一段馬路連線在一起的。小新將連線...

vijos1070 新年趣事

描述格式 輸入格式 第一行兩個數n 2 n 500 m,分別表示國家的城市數和可以修建鐵路的城市有多少對。接下來m行,每行三個正整數ai,bi,ci,表示城市ai和bi之間可以修建鐵路,費用為ci。輸出格式 第一行 cost 乙個整數,表示最小費用。若不存在,輸出 1 第二行 cost 乙個整數,表...