STL写的大根堆老是报错

STL写的大根堆一直错

#include<bits/stdc++.h>
using namespace std;
struct node{
    int u,v,w;
    friend bool operator >(node a,node b){
        return a.w>b.w;
    }
    friend bool operator <(node a,node b){
        return a.w<b.w;
    }
};
priority_queue<node, vector<node>, greater<node>> e;//这一行一直报错
map<int,bool>w,s;
int z,ans;
int main(){
    scanf("%d",&z);
    for(int i=1;i<=z;i++){
        for(int j=1;j<=z;j++){
            if(w[i*1000+j==true]||w[j*1000+i]==true) continue;
            node q;
            scanf("%d",q.w);
            q.u=i,q.v=j;
            e.push(q);
            w[i*1000+j]=true,w[j*1000+i]=true;
        }
    }
    for(int i=1;i<=z-1;i++){
        node x=e.top();
        e.pop();
        while(s[x.u]==true&&s[x.v]==true){
            x=e.top();
            e.pop();
        }
        ans+=x.w;
        s[x.u]=true,s[x.v]=true;
    }
    printf("%d",ans);
    return 0;
}

img

报错里是提示把>>改成> >