Do I need to delete a vector?
Overall

Resolve all standard library entities with std::. Never put using namespace declarations in a header file, where most of his belongs.

Class Edge

You use initializer lists in some places (Graph), not in others. Be consistent. I advise using them always where they're needed, and not at all where they're not.  Also, there is no need for a destructor in this class unless you're expecting polymorphism and need virtual-dtor for a vtable. Finally, make your getters const

class Edge {
private:
  int vertex1;
  int vertex2;
  int cost;
  int time;

public:
  Edge(int v1, int v2, int cost, int time) 
    : vertex1(v1), vertex2(v2), cost(cost), time(time)
  {
  }

  int getVertex1() const { return vertex1; }
  // etc...
};


Class Graph

There are outright compilation bugs in this class. There is no such entity as Edges, yet you have a vector of them. Further, properly named it should be edges are a vector of Edge. Also, the initializer list in this class is pointless, as is the destructor and, as-written, the constructor. Finally, you may (or may not) want to pass your incoming edge as a const-ref (lots of opinions on that, I know).

class Graph {
private:
  vector&lt;Edge&gt; edges; //edges in graph

public:
  int getTotalCost();
  int getTotalTime();
  void addEdge(const Edge&amp; e);  

  Graph getMST();   // get Minimum Spanning Tree
};


Class Vertex

As previously mentioned, use initializer lists and full std:: namespace resolution. Like Graph, this uses Edges as a typename, but no such type exists. Again, we use const qualifiers on all getters, here also returning the name by const-ref rather than value-copy. Finally, no chance of ever setting visited to true unless you provide a setter for it, nor accessing or modifying the edges vector without providing some means to do so.

class Vertex
{
private:
    std::string name;
    int number;
    bool visited;
    std::vector&lt;Edge&gt; connEdges;  // vector of all edges connected to this vertex

public:
    Vertex(const std::string&amp; name, int number)
        : name(name), number(number), visited(false)
    {
    }

    // edge accessors
    void addEdge(const Edge&amp; edge) { connEdges.push_back(edge); }
    const std::vector&lt;Edge&gt;&amp; getEdges() const { return edges; }

    // properties
    const std::string&amp; getName() const { return name; }
    int getNum() const { return number; }
    bool wasVisited() const { return visited; }
    void setVisited(bool val = true) { visited = val; }

    Graph getShortestPath();
};


main()

This function is simply loaded with errors. Among them:


edge  is not a pointer type, so that assignment won't event compile.
p_edge is derferenced though it is never initialized, so that will likely outright-fault due to undefined behavior
ifile is never opened before use, so nothing will be read there.
it leaks memory, but only because of an error previously mentioned above. Were that coded correctly this would be a non-issue.