
1 文本格式
using System;
 using System.Text;
 using System.Linq;
 using System.Collections;
 using System.Collections.Generic;
namespace Legalsoft.Truffer.Algorithm
 {
     public class Node  // : IComparable<Node>
     {
         private int vertex, weight;
         public Node(int v, int w)
         {
             vertex = v;
             weight = w;
         }
         public int getVertex() { return vertex; }
         public int getWeight() { return weight; }
         public int CompareTo(Node other)
         {
             return weight - other.weight;
         }
     }
    public class Dijkstra_Algorithm
     {
         // Function to find the shortest distance of all the
         // vertices from the source vertex S.
         public static int[] dijkstra(int V, List<List<Node>> graph, int src)
         {
             int[] distance = new int[V];
             for (int i = 0; i < V; i++)
             {
                 distance[i] = Int32.MaxValue;
             }
             distance[src] = 0;
            SortedSet<Node> pq = new SortedSet<Node>();
             pq.Add(new Node(src, 0));
            while (pq.Count > 0)
             {
                 Node current = pq.First();
                 pq.Remove(current);
                foreach (Node n in graph[current.getVertex()])
                 {
                     if (distance[current.getVertex()] + n.getWeight() < distance[n.getVertex()])
                     {
                         distance[n.getVertex()] = n.getWeight() + distance[current.getVertex()];
                         pq.Add(new Node(n.getVertex(), distance[n.getVertex()]));
                     }
                 }
             }
             // If you want to calculate distance from source to
             // a particular target, you can return
             // distance[target]
             return distance;
         }
        public static string Drive()
         {
             int V = 9;
             List<List<Node>> graph = new List<List<Node>>();
             for (int i = 0; i < V; i++)
             {
                 graph.Add(new List<Node>());
             }
             int source = 0;
             graph[0].Add(new Node(1, 4));
             graph[0].Add(new Node(7, 8));
             graph[1].Add(new Node(2, 8));
             graph[1].Add(new Node(7, 11));
             graph[1].Add(new Node(0, 7));
             graph[2].Add(new Node(1, 8));
             graph[2].Add(new Node(3, 7));
             graph[2].Add(new Node(8, 2));
             graph[2].Add(new Node(5, 4));
             graph[3].Add(new Node(2, 7));
             graph[3].Add(new Node(4, 9));
             graph[3].Add(new Node(5, 14));
             graph[4].Add(new Node(3, 9));
             graph[4].Add(new Node(5, 10));
             graph[5].Add(new Node(4, 10));
             graph[5].Add(new Node(6, 2));
             graph[6].Add(new Node(5, 2));
             graph[6].Add(new Node(7, 1));
             graph[6].Add(new Node(8, 6));
             graph[7].Add(new Node(0, 8));
             graph[7].Add(new Node(1, 11));
             graph[7].Add(new Node(6, 1));
             graph[7].Add(new Node(8, 7));
             graph[8].Add(new Node(2, 2));
             graph[8].Add(new Node(6, 6));
             graph[8].Add(new Node(7, 1));
            int[] distance = dijkstra(V, graph, source);
             // Printing the Output
             StringBuilder sb = new StringBuilder();
             sb.AppendLine("Vertex " + " Distance from Source");
             for (int i = 0; i < V; i++)
             {
                 sb.AppendLine(i + "\t" + distance[i]);
             }
             return sb.ToString();
         }
     }
 }
  
2 代码格式
using System;
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public class Node{private int vertex, weight;public Node(int v, int w){vertex = v;weight = w;}public int getVertex() { return vertex; }public int getWeight() { return weight; }public int CompareTo(Node other){return weight - other.weight;}}public class Dijkstra_Algorithm{// Function to find the shortest distance of all the// vertices from the source vertex S.public static int[] dijkstra(int V, List<List<Node>> graph, int src){int[] distance = new int[V];for (int i = 0; i < V; i++){distance[i] = Int32.MaxValue;}distance[src] = 0;SortedSet<Node> pq = new SortedSet<Node>();pq.Add(new Node(src, 0));while (pq.Count > 0){Node current = pq.First();pq.Remove(current);foreach (Node n in graph[current.getVertex()]){if (distance[current.getVertex()] + n.getWeight() < distance[n.getVertex()]){distance[n.getVertex()] = n.getWeight() + distance[current.getVertex()];pq.Add(new Node(n.getVertex(), distance[n.getVertex()]));}}}// If you want to calculate distance from source to// a particular target, you can return// distance[target]return distance;}public static string Drive(){int V = 9;List<List<Node>> graph = new List<List<Node>>();for (int i = 0; i < V; i++){graph.Add(new List<Node>());}int source = 0;graph[0].Add(new Node(1, 4));graph[0].Add(new Node(7, 8));graph[1].Add(new Node(2, 8));graph[1].Add(new Node(7, 11));graph[1].Add(new Node(0, 7));graph[2].Add(new Node(1, 8));graph[2].Add(new Node(3, 7));graph[2].Add(new Node(8, 2));graph[2].Add(new Node(5, 4));graph[3].Add(new Node(2, 7));graph[3].Add(new Node(4, 9));graph[3].Add(new Node(5, 14));graph[4].Add(new Node(3, 9));graph[4].Add(new Node(5, 10));graph[5].Add(new Node(4, 10));graph[5].Add(new Node(6, 2));graph[6].Add(new Node(5, 2));graph[6].Add(new Node(7, 1));graph[6].Add(new Node(8, 6));graph[7].Add(new Node(0, 8));graph[7].Add(new Node(1, 11));graph[7].Add(new Node(6, 1));graph[7].Add(new Node(8, 7));graph[8].Add(new Node(2, 2));graph[8].Add(new Node(6, 6));graph[8].Add(new Node(7, 1));int[] distance = dijkstra(V, graph, source);// Printing the OutputStringBuilder sb = new StringBuilder();sb.AppendLine("Vertex " + " Distance from Source");for (int i = 0; i < V; i++){sb.AppendLine(i + "\t" + distance[i]);}return sb.ToString();}}
}