Submission #1001421
Source Code Expand
using System; using System.Text; using System.Collections.Generic; class Solve{ int N,Q; Edge[] e; public Solve(){} StringBuilder sb; public static int Main(){ new Solve().Run(); return 0; } void Run(){ sb = new StringBuilder(); Read(); Calc(); Console.Write(sb.ToString()); } void Calc(){ long[] circlecosts = new long[N]; for(int i=0;i<N;i++){ circlecosts[i] = -1; } for(int i=0;i<Q;i++){ if(circlecosts[e[i].a] == -1 || e[i].cost+1 < circlecosts[e[i].a]){ circlecosts[e[i].a] = e[i].cost + 1; } if(circlecosts[e[i].b] == -1 || e[i].cost+2 < circlecosts[e[i].b]){ circlecosts[e[i].b] = e[i].cost + 2; } } for(int i=0;i<N;i++){ if(i == 0){ if(circlecosts[N-1] != -1 && (circlecosts[i] == -1 || circlecosts[i] > circlecosts[N-1] + 2)){ circlecosts[i] = circlecosts[N-1] + 2; } } else{ if(circlecosts[i-1] != -1 && (circlecosts[i] == -1 || circlecosts[i] > circlecosts[i-1] + 2)){ circlecosts[i] = circlecosts[i-1] + 2; } } } for(int i=0;i<N;i++){ if(i == 0){ if(circlecosts[N-1] != -1 && (circlecosts[i] == -1 || circlecosts[i] > circlecosts[N-1] + 2)){ circlecosts[i] = circlecosts[N-1] + 2; } } else{ if(circlecosts[i-1] != -1 && (circlecosts[i] == -1 || circlecosts[i] > circlecosts[i-1] + 2)){ circlecosts[i] = circlecosts[i-1] + 2; } } } for(int i=0;i<N;i++){ if(i != N-1){ e[i+Q] = new Edge(i,i+1,circlecosts[i]); } else{ e[i+Q] = new Edge(i,0,circlecosts[i]); } } Kruskal K = new Kruskal(N,e); sb.Append(K.cost+"\n"); } void Read(){ string[] str = Console.ReadLine().Split(' '); N = int.Parse(str[0]); Q = int.Parse(str[1]); e = new Edge[Q+N]; for(int i=0;i<Q;i++){ str = Console.ReadLine().Split(' '); e[i] = new Edge(int.Parse(str[0]),int.Parse(str[1]),Int64.Parse(str[2])); } } } class UnionFind{ int[] par; public UnionFind(int n){ par = new int[n]; for(int i=0;i<n;i++){ par[i] = i; } } public void Union(int x,int y){ par[Get(x)] = y; } public bool Same(int x,int y){ return Get(x) == Get(y); } int Get(int x){ if(x != par[x]){ par[x] = Get(par[x]); } return par[x]; } } class Edge{ public int a; public int b; public long cost; public Edge(int a0,int b0,long c){ a = a0; b = b0; cost = c; } } class Kruskal{ int N,M; public Edge[] edges; public long cost; public Kruskal(int n,Edge[] e){ N = n; edges = e; M = e.Length; Act(); } public Kruskal(int n,int[] a,int[] b,long[] c){ N = n; M = a.Length; edges = new Edge[M]; for(int i=0;i<M;i++){ edges[i] = new Edge(a[i],b[i],c[i]); } Act(); } void Act(){ UnionFind U = new UnionFind(N); cost = 0; Array.Sort(edges,(a,b) => a.cost > b.cost ? 1 : (a.cost == b.cost ? 0 : -1)); for(int i=0;i<M;i++){ if(!U.Same(edges[i].a,edges[i].b)){ U.Union(edges[i].a,edges[i].b); cost += edges[i].cost; } } } }
Submission Info
Submission Time | |
---|---|
Task | G - Zigzag MST |
User | leign |
Language | C# (Mono 4.6.2.0) |
Score | 1300 |
Code Size | 3939 Byte |
Status | AC |
Exec Time | 551 ms |
Memory | 28848 KB |
Judge Result
Set Name | sample | all | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1300 / 1300 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
sample | sample-01.txt, sample-02.txt, sample-03.txt |
all | sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 22 ms | 2776 KB |
01-02.txt | AC | 351 ms | 14808 KB |
01-03.txt | AC | 523 ms | 23344 KB |
01-04.txt | AC | 132 ms | 19544 KB |
01-05.txt | AC | 111 ms | 16984 KB |
01-06.txt | AC | 127 ms | 18008 KB |
01-07.txt | AC | 126 ms | 15448 KB |
01-08.txt | AC | 131 ms | 14808 KB |
01-09.txt | AC | 160 ms | 15184 KB |
01-10.txt | AC | 342 ms | 20864 KB |
01-11.txt | AC | 464 ms | 19896 KB |
01-12.txt | AC | 542 ms | 22700 KB |
01-13.txt | AC | 545 ms | 22704 KB |
01-14.txt | AC | 545 ms | 22700 KB |
01-15.txt | AC | 548 ms | 22704 KB |
01-16.txt | AC | 536 ms | 22704 KB |
01-17.txt | AC | 551 ms | 22704 KB |
01-18.txt | AC | 442 ms | 28204 KB |
01-19.txt | AC | 125 ms | 15576 KB |
01-20.txt | AC | 160 ms | 14168 KB |
01-21.txt | AC | 264 ms | 16560 KB |
01-22.txt | AC | 522 ms | 25024 KB |
01-23.txt | AC | 513 ms | 25024 KB |
01-24.txt | AC | 126 ms | 20432 KB |
01-25.txt | AC | 513 ms | 28848 KB |
01-26.txt | AC | 143 ms | 19544 KB |
01-27.txt | AC | 152 ms | 18256 KB |
01-28.txt | AC | 370 ms | 21744 KB |
01-29.txt | AC | 467 ms | 20792 KB |
01-30.txt | AC | 547 ms | 26032 KB |
sample-01.txt | AC | 21 ms | 2776 KB |
sample-02.txt | AC | 21 ms | 2776 KB |
sample-03.txt | AC | 22 ms | 2776 KB |